java泛型对象初始化--java泛型对象能实例化吗T t=new T()
java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了
泛型反射的关键是获取ParameterizedType,再调用它的getActualTypeArguments()方法获得实际绑定的类型。但注意public class BookManager是不能被反射的,因为擦拭法的缘故。只有在Superclass 或者成员变量(Field.getGenericType())等有函数返回ParameterizedType的时候才能成功反射,
要么搞个构造函数把参数类型传进去才行
我就写了一个构造函数如下:
private static T newTclass(Class clazz) throws InstantiationException, IllegalAccessException{
T a=clazz.newInstance();
return a;
}
使用方法:
try {
T user = newTclass(User.class);
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
当然 这里的 User.class也可以由上层函数传进来。