Java 无法实例化类型列表<;产品>;
我有以下代码:Java 无法实例化类型列表<;产品>;,java,list,initialization,ejb,Java,List,Initialization,Ejb,我有以下代码: List<Product> product = new List<Product>(); 列表产品=新列表(); 错误: Cannot instantiate the type List<Product> 无法实例化类型列表 产品是我的EJB项目中的一个实体。为什么会出现此错误?。无法实例化接口。只能实例化具体类型。您可能希望使用,它是列表接口的实现 List<Product> products = new ArrayLis
List<Product> product = new List<Product>();
列表产品=新列表();
错误:
Cannot instantiate the type List<Product>
无法实例化类型列表
产品
是我的EJB项目中的一个实体。为什么会出现此错误?。无法实例化接口。只能实例化具体类型。您可能希望使用,它是列表
接口的实现
List<Product> products = new ArrayList<Product>();
List products=new ArrayList();
使用具体的列表类型,例如数组列表
,而不仅仅是列表
列表是一个界面。你最终需要一个特定的类,所以
要么试试
List l = new ArrayList();
或
任何适合您需要的都可以。列表可以由实现接口的任何类实例化。通过这种方式,Java为我们提供了多态行为。请参见下面的示例:
List<String> list = new ArrayList<String>();
List List=new ArrayList();
我没有直接实例化ArrayList,而是使用列表引用ArrayList对象,这样我们只使用列表接口方法,而不关心它的实际实现
实现列表的类有ArrayList、LinkedList和Vector。您可能希望根据自己的需求创建一个列表
示例:-当您需要执行大量的惰性或删除操作时,LinkedList更有用。Arraylist的性能更高,因为它由固定大小的数组支持,并且必须通过移动或重新排列数组来更改数组内容
同样,使用列表,我们可以简单地更改对象实例化,而无需进一步更改程序中的任何代码
假设我们正在使用ArrayList value=new ArrayList()代码>
我们可能会使用特定的ArrrayList方法,而out代码将不健壮
通过使用List value=new ArrayList()代码>
我们正在确保只使用列表接口方法。如果我们想将其更改为LinkedList,只需更改代码:
List<String> value = new ArrayList<String>();
List value=new ArrayList();
------您的代码使用列表接口方法
value = new LinkedList<String>();
value=newlinkedlist();
-----您的代码仍然使用列表接口方法,我们不需要更改任何内容----
我们不需要进一步修改代码中的任何内容
顺便说一句,LinkedList也可以运行一个Deque,显然您也不能实例化它,因为它也是一个接口接口不能直接实例化,您应该实例化实现这些接口的类
试试这个:
NameValuePair[] params = new BasicNameValuePair[] {
new BasicNameValuePair("param1", param1),
new BasicNameValuePair("param2", param2),
};
我们两种方法都可以,不是吗?我只是在回答这个问题。事实上,这是答案之一。原始集合类型是危险的,不应该在针对Java 5+的任何新代码中使用,也不应该建议使用。应该避免,是的。Java应用程序的前泛型是什么?底线是有两种方法可以实例化这种语句,它们都是有效的。还有一个问题是,在可能的情况下,应该使用哪种方法。“这就是泛型。”马特·鲍尔,好吧,让它去死吧。但我们必须涵盖所有方面。当做我做不到。它返回错误“type missing argument for generic class”,很高兴有人这样问。作为一个从c#到java的开发人员,现在还不清楚列表是否是这种语言中的接口。@SouthShoreAK如果在使用列表之前需要阅读文档,这只不过是设计拙劣的标志。这被称为“编程到接口”设计模式。
NameValuePair[] params = new BasicNameValuePair[] {
new BasicNameValuePair("param1", param1),
new BasicNameValuePair("param2", param2),
};