programing

Java에서 목록을 "인스턴스화"하고 있습니까?

newsource 2023. 1. 20. 16:13

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