相关疑难解决方法(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万
查看次数

创建泛型类型的实例?

如果BaseFruit有一个接受一个的构造函数,int weight我可以用这样的泛型方法实例化一块水果吗?

public void AddFruit<T>()where T: BaseFruit{
    BaseFruit fruit = new T(weight); /*new Apple(150);*/
    fruit.Enlist(fruitManager);
}
Run Code Online (Sandbox Code Playgroud)

注释后面添加了一个示例.如果我给出BaseFruit一个无参数构造函数然后通过成员变量填充所有内容,我似乎只能这样做.在我的真实代码中(不是关于水果),这是不切实际的.

-Update-
所以它似乎无法以任何方式通过约束来解决.从答案中有三种候选解决方案:

  • 工厂模式
  • 反射
  • 活化剂

我倾向于认为反射是最不干净的,但我不能在其他两个之间做出决定.

.net c# generics

212
推荐指数
7
解决办法
20万
查看次数

Java泛型问题

我上课了

public abstract class FakeClass<T extends MyClass> {
    protected HashMap<Character, T> myMap;

    private void myMethod(){
        myMap.put('c', /*???? I need to instatiate something of type T here.*/)
    }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我无法弄清楚如何实例化T类型的东西.这可能吗?如果是这样,有人能指出我正确的方向吗?

谢谢!

java generics

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

标签 统计

generics ×3

java ×2

.net ×1

c# ×1