Java-java泛型中父类如何知道子类传递的Class类型
例如设计一个BaseDAO<T>,我想得到T的Class对象,但是T.class是非法的,那么该如何获取呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
例如设计一个BaseDAO<T>,我想得到T的Class对象,但是T.class是非法的,那么该如何获取呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(4)
另外 既然你使用了泛型 就不要针对特定的类型做特殊的处理 如果你有这种需求 那不如不要用泛型 否则毫无意义
Java泛型的类型是无法在运行时通过反射取得的,泛型类型在编译成字节码的时候已经被虚拟机给去掉了,只是起到提示编译器进行类型检查的作用。记得Java里的泛型是通过擦除的方式实现的。具体可以参考《Java编程思想》吧。里面有详细的讲解Java泛型实现的机制。
有人写了如何获取泛型,可以参考这篇文章 http://blog.csdn.net/sunguangran/article/details/6152236
可以这么获取
Type t = getClass().getGenericSuperclass();
ParameterizedType p = (ParameterizedType) t ;
Class<T> c = (Class<T>) p.getActualTypeArguments()[0];