0
点赞
收藏
分享

微信扫一扫

java泛型对象初始化--java泛型对象能实例化吗T t=new T()




java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了 
泛型反射的关键是获取ParameterizedType,再调用它的getActualTypeArguments()方法获得实际绑定的类型。但注意public class BookManager<Book>是不能被反射的,因为擦拭法的缘故。只有在Superclass 或者成员变量(Field.getGenericType())等有函数返回ParameterizedType的时候才能成功反射, 


要么搞个构造函数把参数类型传进去才行



我就写了一个构造函数如下:

private static <T> T newTclass(Class<T> 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也可以由上层函数传进来。

举报

相关推荐

0 条评论