62,635
社区成员




public Class<?> getType(){
T t = (T) new Object();
return t.getClass();
}
不知道这样行不行因为T是类型,所有先实例化T然后获取类型
Class<T> entityClass = null;
Type t = getClass().getGenericSuperclass();
if(t instanceof ParameterizedType){
Type[] p = ((ParameterizedType)t).getActualTypeArguments();
entityClass = (Class<T>)p[0];
}
public <T> T simplquery(String querysql, ResultSetCallBackInf<T> callback,
String... param) throws SQLException {
ResultSet rs = null;
rs = dbUtil.simplquery(querysql, param);
return callback.RsCallback(rs);
}
在实际开发中我们需要用同一个方法来操作所有的业务bean(增删改查),而bean类不可能就一个所以需要使用泛型来处理,这就是泛型的优点
class B extends T<X> {
}
这种情况,即使在A里面写代码,也是能够获取X的具体信息的。
之所以这种方式可以,那是因为在编译的时候,<X>的信息,已经编译到了B.class里面,成为了B.class的一部分。而你new A<X>()或者new A<Y>()的时候,<X><Y>只存在于运行期,并没有被编译到A.class里面。所以无法反射出来
package com.w1520.JavaDemo;
/**
* 测试.
*
* @author puruidong
* @version 2013.2.25
*/
class ABC<T>{
public ABC (T t){
System.out.println(t.getClass());//获取类的信息.
}
}
class D{
//空类.
}
public class JavaDemo {
public static void main(String[] args) {
new ABC(new D());
}
}
输出:
class com.w1520.JavaDemo.D