泛型函数中的对象的Java分配解决方法?

时间:2013-06-19 20:25:10

标签: java

基本上我要做的是从通用函数中分配参数化类型:

public < T > T wishful_thinking(  )
{
    return new T( );
}

由于“对象切片”(也就是说,它编译,但是“段错误”),也无法进行转换:

public < T > T wishful_thinking(  )
{
    return ( T )new Object( );
}

所以...有没有解决方法(可能使用反射或其他一些)?

谢谢!

2 个答案:

答案 0 :(得分:5)

你做不到。解决方案是在方法中传递Class对象并使用反射来创建实例。

没有任何异常处理的示例:

public <T> T wishful_thinking(Class<T> clazz)
{
    return clazz.newInstance();
}

答案 1 :(得分:3)

泛型不是用Java来实现的。因此,你不能拥有像new T()这样的东西,因为T被删除了。

获取对象的唯一方法是使用Class表示:

public <T> T wishful_thinking( Class<T> classToInstanciate ) throws ...
{
   return classToInstanciate.newInstance();
}