无法实例化typesList <Product>
我有以下代码:
List<Product> product = new List<Product>();
错误:
Cannot instantiate the type List<Product>
Product
是我的EJB项目中的一个实体。 为什么我得到这个错误?
List
是一个接口 。 接口不能被实例化。 只有具体的types可以被实例化。 你可能想要使用一个ArrayList
,它是List
接口的一个实现 。
List<Product> products = new ArrayList<Product>();
使用具体的列表types,例如ArrayList
而不是List
。
列表是一个接口。 你最终需要一个特定的类,所以要么尝试
List l = new ArrayList();
要么
List l = new LinkedList();
哪个适合你的需求。
List可以通过实现接口的任何类来实例化。通过这种方式,Java为我们提供了多态的行为。参见下面的例子
List list = new ArrayList();
我没有直接实例化ArrayList,而是使用List来引用ArrayList对象,以便我们只使用List接口方法,而不关心它的实际实现。
实现List的类的示例是ArrayList,LinkedList,Vector.You可能要根据您的要求创build一个List。
例如: – 当您需要执行一些惰性或删除操作时,LinkedList更加有用.Arraylist的性能更强,因为它由一个固定大小的数组支持,并且数组内容必须通过移动或重新生成数组来更改。
同样,使用一个List,我们可以简单地改变我们的对象实例,而不需要在程序中进一步改变任何代码。
假设我们正在使用ArrayList<String> value = new ArrayList<String>();
我们可能会使用ArrrayList的特定方法,而且代码不会很健壮
通过使用List<String> value = new ArrayList<String>();
我们确保我们只使用List接口方法。如果我们想将其更改为LinkedList,我们只需要更改代码:
List value = new ArrayList();
——你的代码使用List接口方法…..
value = new LinkedList();
—–你的代码仍然使用List接口方法,我们不需要改变任何东西—-并且我们不需要改变代码中的任何东西
顺便说一个LinkedList也工作一个Deque,显然你也不能实例化,因为它也是一个接口
接口不能直接实例化,你应该实例化实现这种接口的类。
尝试这个:
NameValuePair[] params = new BasicNameValuePair[] { new BasicNameValuePair("param1", param1), new BasicNameValuePair("param2", param2), };