反射 ParameterizedType获取java泛型参数类型

桃扇骨 2022-06-11 00:50 326阅读 0赞
  1. 转载地址:http://blog.sina.com.cn/s/blog_4a4f9fb50101g7z9.html
  2. getClass().getGenericSuperclass()返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的直接超类的 Type
  3. 然后将其转换ParameterizedType。。
  4. getActualTypeArguments()返回表示此类型实际类型参数的 Type 对象的数组。
  5. [0]就是这个数组中第一个了。。
  6. 简而言之就是获得超类的泛型参数的实际类型。。
  7. 比如
  8. 超类
  9. public class GenericDAO {
  10. private Class entityClass;
  11. protected GenericDAO() {
  12. Type type = getClass().getGenericSuperclass();
  13. Type trueType = ((ParameterizedType) type).getActualTypeArguments()[0];
  14. this.entityClass = (Class) trueType;
  15. }
  16. }
  17. 子类
  18. public class OptionManager extends GenericDAO {
  19. }
  20. 测试类
  21. public class OracleTest {
  22. public static void main(String[] args) throws Exception {
  23. OptionManager manager = new OptionManager();
  24. }
  25. }
  26. 这样在你new OptionManager();以后
  27. 超类里的entityClass就是子类那里的public class OptionManager extends GenericDAO 里面的MSGC_OPTION所对应的class对象了..

发表评论

表情:
评论列表 (有 0 条评论,326人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java获取类型信息

    根据使用泛型位置的不同可以分为:声明侧泛型、使用侧泛型。 声明侧的泛型信息被记录在Class文件的Constant pool中以Signature的形式保存。而使用侧的泛型信