Java에서 ArrayList나 HashMap등을 선언할때 자료형 이름 뒤에 <String> , <String,String> 등을 선언하는데 어떤 의미로 선언하는 것일까?
-->선언되는 자료형에 들어갈 객체 타입을 정해주는 제네릭스(Generics)이다. 예를 들어 ArrayList<String> listObjec= new ArrayList<String>에는 Stirng 자료형만 들어갈 수 있다.
예시)
ArrayList<String> listObjec = new ArrayList<String> // String 자료형만 들어갈 수 있다.
listObject.add("str1"); // ok
listObject.add(123); // x 이렇게 하려면 <Integer>로 선언
+
제네릭스가 필요한 이유
1. 자료형 선언만 보면 어떤 자료형을 넣는 용도인지 알 수 있다.
2. 객체에서 자료를 꺼낼때 명시적 형변환이 필요없다
예시)
//제네릭스 사용안한 경우
ArrayList aList = new ArrayList(); //제네릭스 없음
aList.add('str2'); //가능 , String 자료형 추가
get을 이용하여 자료 이용할때
String strVar = (String)aList.get(0) //명시적 형변환 필요
//제네릭스 사용
ArrayList<String> strList = new ArrayList<String>(); //제네릭스 존재
strList.add('str3') // 가능
String strVar2 = strList.get(0) // (String)없이 가능
+
3. 제네릭스를 이용하지 않으면 명시적형변환 할때 오류를 발생시킬 수 있다.
ArrayList bList = new ArrayList();
bList.add(321); //int형 자료를 넣음
//bList의 첫번째 요소가 String인줄 알고 추출하려는 경우
//bList의 첫번째 요소는 int형
String strVar3 = (String)bList.get(0); //int형이므로 오류
[JavaScript] JSON 문자열로 변환하기 JSON.stringify() (0) | 2020.01.15 |
---|---|
[Java] StringBuffer 객체형 자료형 사용하기(문자열을 수정할때) (0) | 2020.01.14 |
[Java] 문자열(String) 비교 equals() , == 와 차이점 (0) | 2020.01.09 |
[Java] 자바 List 자료형 알아보기(ArrayList) (0) | 2020.01.08 |
[jQuery] index() - 클릭한 요소가 몇번째 인자(eq)인지 알아내기 (0) | 2020.01.08 |