通用函数内对象的Java分配解决方案?

通用函数内对象的Java分配解决方案?,java,Java,基本上,我要做的是从泛型函数中分配一个参数化类型: public < T > T wishful_thinking( ) { return new T( ); } 由于对象切片(即编译),强制转换也不起作用,但是: public < T > T wishful_thinking( ) { return ( T )new Object( ); } 那么…是否有任何解决方法,可能是使用反射或类似的方法 谢谢 你不能。解决方案是在方法中传递类对象,并使用

基本上,我要做的是从泛型函数中分配一个参数化类型:

public < T > T wishful_thinking(  )
{
    return new T( );
}
由于对象切片(即编译),强制转换也不起作用,但是:

public < T > T wishful_thinking(  )
{
    return ( T )new Object( );
}
那么…是否有任何解决方法,可能是使用反射或类似的方法


谢谢

你不能。解决方案是在方法中传递类对象,并使用反射创建实例

无任何异常处理的示例:

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

泛型在Java中没有具体化。因此,你不能有新的t,因为t被擦除了

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

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

我想你的意思是它抛出了一个与SEG错误非常不同的ClassCastError。@Peter Lawrey:是的,我只是使用了一种通用的编程语言,因此使用了引号。顺便说一句,你可以在JVM中获得SEG错误,但只有在非常低级别的崩溃情况下。Grrr…必须有某种方法来做到这一点。真的很有趣,Java泛型是一种编译时工具,而不是运行时工具,但它甚至没有考虑到这样的基本操作!Enum/EnumSets很有趣,因为它们是遇到此问题的少数java标准类之一。@SeaBass如果调用方无法分配它,则调用层次结构中较低的函数无法管理它。例如,如果调用方传递了一个抽象类或接口。