Java获得泛型类中T的实例

分手后的思念是犯贱 2022-09-25 04:22 311阅读 0赞

获得泛型类代码:

  1. //获得泛型T的具体类
  2. public class GetGenericUtil<T> {
  3. //得到泛型类T
  4. public Class getMyClass(){
  5. System.out.println(this.getClass());
  6. //class com.dfsj.generic.UserDaoImpl因为是该类调用的该法,所以this代表它
  7. //返回表示此 Class 所表示的实体类的 直接父类 的 Type。注意,是直接父类
  8. //这里type结果是 com.dfsj.generic.GetInstanceUtil<com.dfsj.generic.User>
  9. Type type = getClass().getGenericSuperclass();
  10. // 判断 是否泛型
  11. if (type instanceof ParameterizedType) {
  12. // 返回表示此类型实际类型参数的Type对象的数组.
  13. // 当有多个泛型类时,数组的长度就不是1了
  14. Type[] ptype = ((ParameterizedType) type).getActualTypeArguments();
  15. return (Class) ptype[0]; //将第一个泛型T对应的类返回(这里只有一个)
  16. } else {
  17. return Object.class;//若没有给定泛型,则返回Object类
  18. }
  19. }
  20. }

测试类代码:

  1. public class UserDaoImpl extends GetGenericUtil<User>{
  2. public User getUser() throws Exception{
  3. Object obj = this.getMyClass().newInstance();//得到泛型类,然后创建一个新实例。
  4. if(obj instanceof User){
  5. return (User)obj;
  6. }else{
  7. return null;
  8. }
  9. }
  10. public static void main(String[] args) throws Exception {
  11. User u = new UserDaoImpl().getUser();
  12. System.out.println(u+"----");
  13. }
  14. }

发表评论

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

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

相关阅读