如何实例化泛型类?

lbllbl 2014-06-01 12:15:41
例:
static class Test<E>
{
public void print()
{
E obj = 怎么写? //这里我如何创建一个E的实例化对象
}
}
...全文
1986 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Abellor 2016-02-16
  • 打赏
  • 举报
回复
//clazz 为Test.class,其他类推 Type genType = clazz.getGenericSuperclass(); Type[] params = ((ParameterizedType) genType).getActualTypeArguments(); Class<T> clazz = (Class) params[0] ; return clazz.newInstance() ;
lbllbl 2014-06-02
  • 打赏
  • 举报
回复
是不是就是实现不了?
save4me 2014-06-01
  • 打赏
  • 举报
回复
Class.forName("Test").newInstance()
引用
如何创建一个 Class<T> 类型的实例?就像使用非泛型代码一样,有两种方式:调用方法 Class.forName() 或者使用类常量X.class。Class.forName() 被定义为返回 Class<?>。另一方面,类常量 X.class 被定义为具有类型 Class<X>,所以 String.class 是Class<String> 类型的。
引用 7 楼 lbllbl 的回复:
[quote=引用 5 楼 save4me 的回复:] 那这个呢: Java通过反射实例化泛型类的问题
还是没有看到我想要的方法。我想要的就是类似newInstance()这样的方法。不过newInstance()需要先有个对象才行。[/quote]
lbllbl 2014-06-01
  • 打赏
  • 举报
回复
引用 5 楼 save4me 的回复:
那这个呢: Java通过反射实例化泛型类的问题
还是没有看到我想要的方法。我想要的就是类似newInstance()这样的方法。不过newInstance()需要先有个对象才行。
save4me 2014-06-01
  • 打赏
  • 举报
回复
JAVA 范型 - Class<T>

public static<T> List<T> getRecords(Class<T> c, Selector s) {
     // Use Selector to select rows 
     List<T> list = new ArrayList<T>();
     for (/* iterate over results */) {
         T row = c.newInstance(); // use reflection to set fields from result 
         list.add(row); 
      } 
      return list; 
}

List<FooRecord> l = getRecords(FooRecord.class, fooSelector); 
save4me 2014-06-01
  • 打赏
  • 举报
回复
那这个呢: Java通过反射实例化泛型类的问题
引用 4 楼 lbllbl 的回复:
[quote=引用 2 楼 save4me 的回复:] 请参考 java 泛型详解
从头到尾没有看到我想要的东西。感觉里面那么多实例,写一个就可以了,其它都一样的。[/quote]
lbllbl 2014-06-01
  • 打赏
  • 举报
回复
引用 2 楼 save4me 的回复:
请参考 java 泛型详解
从头到尾没有看到我想要的东西。感觉里面那么多实例,写一个就可以了,其它都一样的。
lbllbl 2014-06-01
  • 打赏
  • 举报
回复
引用 1 楼 kiyoki 的回复:
你根本无从预知E的构造函数需要什么参数,怎么可能实例化?
这个我知道,我要的是 newInstance() 这样的效果。就算抛InstantiationException异常我也能接受,因为构造函数是固定的,可预知的,不用去适应不同的构造函数。另外我如果让它继承一个类会不会让问题变的简单些? static class Test<E extends MyClass>
kiyoki 2014-06-01
  • 打赏
  • 举报
回复
你根本无从预知E的构造函数需要什么参数,怎么可能实例化?
save4me 2014-06-01
  • 打赏
  • 举报
回复

51,396

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧