无法实例化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), };