Java泛型 T.class的获取

public interface BaseDao<T> {  
    T get(String id);  
}  
复制代码
 1 import java.lang.reflect.ParameterizedType;  
 2 import java.lang.reflect.Type;  
 3   
 4 public abstract class HibernateBaseDao<T> implements BaseDao<T> {  
 5     private Class<T> entityClass;  
 6   
 7     /** 
 8      * 这个通常也是hibernate的取得子类class的方法 
 9      *  
10      * @author "yangk" 
11      * @date 2010-4-11 下午01:51:28 
12      */  
13     public HibernateBaseDao() {  
14         Type genType = getClass().getGenericSuperclass();  
15         Type[] params = ((ParameterizedType) genType).getActualTypeArguments();  
16         entityClass = (Class) params[0];  
17     }  
18   
19     @Override  
20     public T get(String id) {  
21         try {  
22             return entityClass.newInstance();  
23         } catch (InstantiationException e) {  
24             // TODO Auto-generated catch block  
25             e.printStackTrace();  
26         } catch (IllegalAccessException e) {  
27             // TODO Auto-generated catch block  
28             e.printStackTrace();  
29         }  
30         return null;  
31     }  
32   
33 }  
复制代码

14-16行是重点,entityClass即为Class,也就是T.class

 

本文参考:http://blog.csdn.net/ykdsg/article/details/5472591

posted @   无忧之路  阅读(5874)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
无忧之路
点击右上角即可分享
微信分享提示