내가 자바에 새로운 오전 질문 HashMap
무엇Java 선언 및 인스턴스화에서 <>의 의미는 무엇입니까?
myBooks = new ArrayList<HashMap<String,Object>>();
가지고 우리가 ArrayList
클래스 <
>
를 사용할 때 그것이 무엇을 의미합니까?
내가 자바에 새로운 오전 질문 HashMap
무엇Java 선언 및 인스턴스화에서 <>의 의미는 무엇입니까?
myBooks = new ArrayList<HashMap<String,Object>>();
가지고 우리가 ArrayList
클래스 <
>
를 사용할 때 그것이 무엇을 의미합니까?
Java에서 일반 유형을 나타냅니다. 당신이 ArrayList
을 사용하는 경우 예를 들어,
myBooks = new ArrayList<String>();
이 ArrayList myBook
에 저장되는 내용 자바에서 사용할 수있는 문자열 유형이 될 것을 의미합니다 다음과 같이. 다음 문
myBooks = new ArrayList<HashMap<String,Object>>();
에서
는 ArrayList를 String 형의 키 입력 개체의 값으로 HasMap을 들고있다.마찬가지로 일반적인 유형 Collection
, List
, HashTable
등을 활용할 수 있으며 값의 어떤 종류를 저장할 수 있기 때문에 항상 일반적인 유형을 사용해야합니다. 다음과 같이 단순히 유전 유형 않고 그들을 정의 할 수와 같은
Collection<String> c=new ArrayList<String>();
List<String>list=new ArrayList<String>();
Hashtable<String, String> h = new Hashtable<String, String>();
로
.
Collection c=new ArrayList();
List list=new ArrayList();
Hashtable h=new Hashtable();
컴파일러는이 상황에서 전혀 불평하지 않지만 항상 그와 함께 제네릭을 사용하는 것이 좋습니다.
이것은 Java generics의 예입니다.
List
또는 Map
또는 Set
과 같은 데이터 구조는 모든 종류의 객체를 보유 할 수 있습니다. 제네릭을 사용할 때 컴파일러에게 데이터 구조가 보유하고있는 객체의 유형을 정확하게 알려줍니다.
귀하의 경우 List
은 Maps
입니다. Map
에는 String
키와 Object
값이 있습니다.
위의 답변은 모두 훌륭합니다.
또한 Generic의 컴파일 시간과 런타임 동작의 차이점을 이해하려면 Java Type Erasure을 읽어보아야합니다.
타입 삭제를 올바르게 이해하면 많은 고통을 덜 수 있습니다.
+1 (아마) Autolycus의 프로필을 확인하고 PHP 비유법을 사용하고 있습니다. – Dave