Programing

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

crosscheck 2020. 8. 19. 07:35
반응형

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


이 질문에 이미 답변이 있습니다.

다음 코드가 있습니다.

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

오류:

Cannot instantiate the type List<Product>

Product내 EJB 프로젝트의 엔티티입니다. 이 오류가 발생하는 이유는 무엇입니까?


List인터페이스 입니다. 인터페이스는 인스턴스화 할 수 없습니다. 구체적인 유형 만 인스턴스화 할 수 있습니다. 인터페이스 ArrayList구현을 사용하고 싶을 것입니다 List.

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

예를 들어. ArrayList대신 구체적인 목록 유형을 사용하십시오 List.


목록은 인터페이스입니다. 결국 특정 수업이 필요하므로 시도하십시오

List l = new ArrayList();

또는

List l = new LinkedList();

귀하의 필요에 맞는 것.


List는 인터페이스를 구현하는 모든 클래스에 의해 인스턴스화 될 수 있습니다.이 방법으로 Java는 다형성 동작을 제공합니다. 아래 예제를 참조하십시오.

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

ArrayList를 직접 인스턴스화하는 대신 List를 사용하여 ArrayList 개체를 참조하므로 List 인터페이스 메서드 만 사용하고 실제 구현에는 신경 쓰지 않습니다.

List를 구현하는 클래스의 예는 ArrayList, LinkedList, Vector입니다. 요구 사항에 따라 List를 만들고 싶을 것입니다.

예 :-LinkedList는 여러 번의 무효화 또는 삭제를 수행해야 할 때 더 유용합니다 .Arraylist는 고정 크기 배열로 지원되고 배열을 이동하거나 다시 늘려 배열 내용을 변경해야하므로 성능 집약적입니다.

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

우리가 ArrayList<String> value = new ArrayList<String>();

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

사용하여 List<String> value = new ArrayList<String>();

List 인터페이스 메서드 만 사용하고 있는지 확인하고 LinkedList로 변경하려면 코드를 변경하면됩니다.

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

------ 코드는 List 인터페이스 메서드를 사용합니다 .....

value = new LinkedList<String>(); 

----- 귀하의 코드는 여전히 List 인터페이스 메서드를 사용하며 아무것도 변경할 필요가 없습니다 .---- 코드에서 더 이상 변경할 필요가 없습니다.

그건 그렇고 LinkedList는 또한 인터페이스이기 때문에 인스턴스화 할 수없는 Deque도 작동합니다.


인터페이스는 직접 인스턴스화 할 수 없으므로 이러한 인터페이스를 구현하는 클래스를 인스턴스화해야합니다.

이 시도:

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

참고 URL : https://stackoverflow.com/questions/7960149/cannot-instantiate-the-type-listproduct

반응형