Java에서 목록을 "인스턴스화"하고 있습니까?
다음 코드를 사용하려고 합니다.
List<Integer> list = new List<Integer>();
다음의 에러 메세지가 표시됩니다.
java.util.List
추상적이어서 인스턴스화할 수 없습니다.
이것은 무엇을 의미하며 왜 I can't initialize 할 수 없는가?List
내가 할 것과 같은 방법으로ArrayList
?
자바에서는List
는 인터페이스입니다.즉, 직접 인스턴스화할 수 없습니다.
대신,ArrayList
이것은 배열을 백업스토어로 사용하는 인터페이스의 실장입니다(이름을 붙입니다).
부터ArrayList
의 일종이다.List
, 간단하게 업캐스트 할 수 있습니다.
List<T> mylist = new ArrayList<T>();
이것은 와 대조적입니다.NET 버전 2.0부터List<T>
의 디폴트 실장입니다.IList<T>
인터페이스입니다.
List
구체적인 클래스가 아닌 인터페이스입니다.
인터페이스는 클래스가 구현할 수 있는 함수의 집합일 뿐입니다.인터페이스를 인스턴스화하는 것은 의미가 없습니다.
ArrayList
는, 이 인터페이스와 그 인터페이스내의 모든 메서드를 실장하는 구체적인 클래스입니다.
사용하다List<Integer> list = new ArrayList<Integer>();
List
클래스가 아닌 인터페이스이므로 인스턴스화할 수 없습니다. ArrayList
아마 당신이 찾고 있는 것이겠죠:
ArrayList<Integer> list = new ArrayList<Integer>();
Java의 인터페이스는 기본적으로 클래스의 Blueprint를 정의합니다. 인터페이스를 구현하는 클래스는 목록에 정의된 메서드의 구현을 제공해야 합니다.그러나 실제 구현은 전적으로 구현 클래스에 달려 있습니다.ArrayList
이 경우는,
또한 JDK는LinkedList
- 리스트 인터페이스에 준거한 대체 실장.이 기능은, operative specific special과ArrayList
따라서 목록 중간에서 항목을 추가하거나 제거하는 데 더 효율적이지만 대부분의 사용 사례에서는 효율성이 떨어집니다.물론 구현의 정의를 원하는 경우 완벽하게 가능합니다.
즉, 구체적인 코드를 포함하지 않는 인터페이스이기 때문에 목록을 작성할 수 없습니다.이것은 해당 목록을 구현하는 클래스의 작업입니다.ArrayList
지금까지 가장 많이 사용되고 있습니다(또한 충분한 이유가 있습니다).
또, C#의 경우,List
인터페이스가 아닌 클래스입니다.IList
같은 원리가 적용되지만 이름만 다를 뿐입니다.
A List
이치노이것은 하나의 인터페이스로, 객체가 다른 객체와 상호 작용할 수 있는 방법을 정의하는 방법입니다.따라서, 그것은 결코 인스턴스화될 수 없습니다. 안ArrayList
의 실장입니다.List
그것들을하세요.대신 그것들을 사용하세요.
A List
는 "갖춰야 할 입니다.의 실장: 「」등)ArrayList
이 인터페이스를 실장해, 다양한 방법의 동작을 구체화합니다.이스리 무엇 엇엇 엇엇? ???대부분의 경우 기본 제공 목록 중 하나를 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/6810691/instantiating-a-list-in-java
'programing' 카테고리의 다른 글
'메모리 스톰프'란? (0) | 2023.01.30 |
---|---|
개체를 포함하는 어레이를 루프하여 해당 속성에 액세스하는 방법 (0) | 2023.01.30 |
MariaDB 문자 인코딩 (0) | 2023.01.20 |
쿼리 조건이 JPA 및 스프링을 충족하는 경우 행 삽입 (0) | 2023.01.20 |
Pthread 라이브러리에서 스레드 제거 (0) | 2023.01.20 |