我的问题与 this 非常相似问题。我希望能够实例化类型参数类型的对象,而且不需要传入“工厂”。我真的需要将所有内容都包含在一个类(class)中。
public class myClass<E> {
E someObject;
public myClass(){
someObject = new E();
}
}
以前的解决方案需要将 myClass 的构造函数更改为具有工厂参数,然后调用该构造函数,但出于我的目的,我不想修改从外部对 myClass 的任何调用。
最佳答案
问题是你不知道E
是什么,也不知道如何构造它。它可以是任何类型(它是 universally quantified )。您需要提供证据证明,无论 E
是什么,它确实可以被构造。给定类型的“工厂”充当了它可以实现这一事实的一种见证。
想一想:如果我将 Void
作为参数 E
传递怎么办?您将如何构造一个 Void 类型的值?
能够为所有E
构造E
就像从无到有地创造出一些东西。这在逻辑上是不可能的。 ∀E。 E
是一个无人居住的集合。
您真正想要的是让 E
有一个界限,或者传递一个构造函数(工厂)作为 E
在集合中这一事实的见证可构造对象。
关于java - 实例化类型参数而不传递对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821966/