programing

유형 목록을 인스턴스화할 수 없습니다.

nicescript 2022. 12. 29. 21:59
반응형

유형 목록을 인스턴스화할 수 없습니다.

다음 코드가 있습니다.

List<Product> product = new List<Product>();

오류:

Cannot instantiate the type List<Product>

ProductEJB 프로젝트의 엔티티입니다.이 에러가 발생하는 이유

List 는 인터페이스입니다.인터페이스는 인스턴스화할 수 없습니다.구체적인 유형만 인스턴스화할 수 있습니다.를 사용하는 것이 좋습니다.이것은, 의 실장입니다.List인터페이스입니다.

List<Product> products = new ArrayList<Product>();

구체적인 목록 유형을 사용합니다(예:ArrayList뿐만 아니라List.

리스트는 인터페이스입니다.최종적으로 특정 클래스가 필요하기 때문에 둘 중 하나를 시도합니다.

List l = new ArrayList();

또는

List l = new LinkedList();

어느 쪽이든 당신의 필요에 따라.

목록은 인터페이스를 구현하는 모든 클래스에서 인스턴스화할 수 있습니다.자바는 우리에게 다형성 행동을 제공합니다다음의 예를 참조해 주세요.

List<String> list = new ArrayList<String>();

ArrayList를 직접 인스턴스화하는 것이 아니라 List를 사용하여 ArrayList 개체를 참조하고 있습니다.그러면 List 인터페이스 메서드만 사용하고 실제 구현에는 관심이 없습니다.

목록을 구현하는 클래스의 예로는 ArrayList, LinkedList, Vector 등이 있습니다.요건에 따라 목록을 작성할 수도 있습니다.

예:- Linked List는 다수의 관성 또는 삭제를 수행해야 하는 경우에 더욱 유용합니다.어레이 리스트는 고정 크기 어레이로 백업되기 때문에 퍼포먼스가 높아집니다.또, 어레이의 이동이나 재생에 의해서 어레이의 내용을 변경할 필요가 있습니다.

List를 사용하면 프로그램에서 코드를 더 이상 변경하지 않고 단순히 객체 인스턴스화를 변경할 수 있습니다.

사용하고 있다고 가정합니다.ArrayList<String> value = new ArrayList<String>();

Array List의 특정 방법을 사용할 수 있으며 출력 코드는 강력하지 않습니다.

사용방법List<String> value = new ArrayList<String>();

List interface 메서드만 사용하고 있는지 확인합니다.Linked List로 변경하려면 코드를 변경하기만 하면 됩니다.

List<String> value = new ArrayList<String>(); 

-----코드는 List interface 메서드를 사용합니다.

value = new LinkedList<String>(); 

-----코드는 아직 List interface 메서드를 사용하고 있기 때문에 아무것도 변경할 필요가 없습니다.또, 코드의 아무것도 변경할 필요가 없습니다.

덧붙여서 Linked List는 Deque도 동작하지만 인터페이스이기 때문에 인스턴스화할 수 없습니다.

인터페이스는 직접 인스턴스화할 수 없습니다.이러한 인터페이스를 실장하는 클래스를 인스턴스화할 필요가 있습니다.

이것을 시험해 보세요.

NameValuePair[] params = new BasicNameValuePair[] {
        new BasicNameValuePair("param1", param1),
        new BasicNameValuePair("param2", param2),
};

언급URL : https://stackoverflow.com/questions/7960149/cannot-instantiate-the-type-listproduct

반응형