日期:2014-05-20  浏览次数:20645 次

求大神言简意赅的解释下几行代码
private Class<?> entityClass;

Class c = this.getClass();

Type type = c.getGenericSuperclass();

ParameterizedType pType = (ParameterizedType)type;

Type[] params = pType.getActualTypeArguments();

entityClass = (Class)params[0];


今天学了反射。但是这几行代码都看不懂?API根本就不知道在说什么,描述的非常绕口,完全看不明白。然后跑去看英文版的。偶雅思好歹也是7.5的成绩,自认英文不差,但也根本看不明白API在说什么。

求大神们解答下啦。这几行到底要表达啥?还有到底什么是“参数化类型”啊?

求生动形象,言简意赅,叩谢!

------解决方案--------------------
private Class<?> entityClass;//定义一个不知道啥类型的类型(我都觉得绕)

Class c = this.getClass();//获取对象自身的Class

Type type = c.getGenericSuperclass();//获取对象自身的泛型超类,其实就是对象的类定义时定义的泛型

ParameterizedType pType = (ParameterizedType)type;//转换

Type[] params = pType.getActualTypeArguments();//得到实际的类型参数

entityClass = (Class)params[0];

我感觉这个的意思是获取当前对象的类中,定义的泛型的类型。
我建议楼主可以找一个泛型类,生成一个对象,然后验证一下这些代码
------解决方案--------------------
http://blog.csdn.net/duancanmeng/article/details/7464658
楼主可以参考下
------解决方案--------------------
看英文猜测意思。
------解决方案--------------------

------解决方案--------------------
这段代码是想通过反射拿到泛型的实际类型,也就是传进去的类型。

如果想真正理解透,你可以去看看张孝祥老师的Java高新技术视频,官网有下。关于泛型的章节,有这个例子。

这样说,你也没法完全弄懂的。

主要是一个参数化类型,ParameterizedType
------解决方案--------------------
其实楼主的重点是雅思7.5吧!