---------------------
·´Éä·ºÐÍÐÅÏ¢ |
---------------------
# ¸¸Àà»ñÈ¡×ÓÀà´«µÝµÄ·ºÐÍÐÅÏ¢
Class ÀàÊÇ·´ÉäµÄ±Ç׿,ʲô·´Éä¶¼µÃ´ÓËû¿ªÊ¼
ËüÓÐÒ»¸ö·½·¨
Type getGenericSuperclass();//·µ»Ø±íʾ´Ë Class Ëù±íʾµÄʵÌ壨Àà¡¢½Ó¿Ú¡¢»ù±¾ÀàÐÍ»ò void£©µÄÖ±½Ó³¬ÀàµÄ Type¡£
Type ÊÇÒ»¸ö½Ó¿Ú,ËüÓÐÒ»¸ö×ÓÀà½Ó¿Ú--ParameterizedType
Type ---- > ParameterizedType(ÎÒÃǵõ½Õâ¸öType,»áÇ¿ÖÆ×ª»»³ÉÕâ¸öÀàÐÍ)
ParameterizedType
> ²ÎÊý»¯ÀàÐÍ Æäʵ¾ÍÊÇ Demo
> ¾ÍÊÇÀà,¼ÓÉÏÀàÐͲÎÊý,ÀàÃûºÍ·ºÐÍ
> getActualTypeArguments()//»ñÈ¡ÕæÊµµÄÀàÐͲÎÊýÃÇ,·µ»ØÒ»¸öType[]
> ÉÏÃæµÄ·½·¨·µ»ØÒ»¸öType[]Êý×é,ÄÇôÕâ¸öÊý×é¾ÍÊÇÎÒÃÇÐèÒªµÄClass[]
ʾÀý´úÂë
> !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Class c = (Class) ((ParameterizedType)this.getClass().getGenericSuperclass()).getActualTypeArguments()[0];
> Õâ´®´úÂëдÔÚÄãµÄ·ºÐÍÀàÀïÃæ
> ×îºÃдÔÚ¹¹Ô캯Êý,ÄÇôÕâ¸öc,¾ÍÊÇÕâ¸öÀàµÄ×ÓÀà´«µÝÉÏÀ´µÄ·ºÐÍÀàÐ͵ÄClass¶ÔÏó
> Èç¹û×ÓÀà´«µÝString ..ÄÇôÕâ¸öc ¾ÍÊÇString.class
> Èç¹û×ÓÀà´«µÝInteger ..ÄÇôÕâ¸öc ¾ÍÊÇInteger.class
»ñÈ¡×ÓÀà´«µÝµÄÀàÐÎ(¸úÉÏÃæÒ»Ñù)
ParameterizedType parameterizedType = (ParameterizedType) this.getClass().getGenericSuperclass();
clazz = (Class) parameterizedType.getActualTypeArguments()[0];