Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法实例化类型列表<;产品>;_Java_List_Initialization_Ejb - Fatal编程技术网

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),
};