相关疑难解决方法(0)

在Java中创建泛型类型的实例?

是否可以在Java中创建泛型类型的实例?我正在考虑基于我所看到的答案是no(由于类型擦除),但如果有人能看到我缺少的东西,我会感兴趣:

class SomeContainer<E>
{
    E createContents()
    {
        return what???
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:事实证明,超级类型标记可用于解决我的问题,但它需要大量基于反射的代码,如下面的一些答案所示.

我会把这个开放一段时间,看看是否有人提出了与Ian Robertson的Artima文章截然不同的任何东西.

java generics

554
推荐指数
16
解决办法
43万
查看次数

是否可以通过将"new Object()"作为泛型类来实例化泛型类?

所以我试图创建一个使用泛型的类来扩展抽象类.防爆.

public abstract class Template<C extends Abstract>
Run Code Online (Sandbox Code Playgroud)

但是,我需要在我的课程中实例化这个'C'.我想我可能会这样做:

C s = (C) ((C)new Object()).getClass().getConstructor(Known.class,AnotherKnown.class).newInstance(objectOfKnownType,objectOfAnotherKnownType);
Run Code Online (Sandbox Code Playgroud)

所以我的问题基本上是否可行.我觉得这样

((C) new Object()).getClass()
Run Code Online (Sandbox Code Playgroud)

可能会给我一些问题.

如果我将其更改为:

C a;
C s = (C) (a.getClass().getConstructor( ... ).newInstance( ... ));
Run Code Online (Sandbox Code Playgroud)

java generics casting object instantiation

1
推荐指数
1
解决办法
349
查看次数

标签 统计

generics ×2

java ×2

casting ×1

instantiation ×1

object ×1