태투'S/SIL
2022_07_20 컬렉션 클래스에서 제네릭을 사용하는 이유
태투2
2022. 7. 20. 01:18
Answer :
컬렉션 클래스에 저장되는 인스턴스 타입을 제한하여 런타임에 발생할 수 있는 잠재적인 모든 예외를 컴파일 타임에 잡아 낼 수 있어서 사용한다.
1. 제네릭이란?
List<Interger> list1 = new ArrayList<>();
List list2 = new ArrayList<>();
Map<String, String> map = new ArrayList<>();
위의 코드와 같이 꺽쇠 안에 클래스 타입이 명시된 패턴의 형식
이걸 제네릭(Generic) 이라고 부르며, 제네릭 파라미터는 꺽쇠 안에 포함하여 전달한다.
1-1. Java에서 제네릭이란?
- 컴파일 시 타입 체크를 해주는 기능(compile-time type check) JDK 1.5
- 객체 타입에 안정성을 높이고 형변환의 번거로움을 줄여줌
2. 제네릭의 장점
- 타입을 안정성을 제공(Class Cast Exception - 형변환 에러를 미연에 방지)
- 타입 체크와 형변환을 생략할 수 있어서, 코드가 간결해짐
- 런타임에 발생할 수 있는 타입 에러를 컴파일 전에 검출한다.
3. 제네릭스 적용 예시
package com.taetoo.genericsStudy;
import java.util.ArrayList;
import java.util.List;
public class MainClass{
public static void main(String[]args){
List noGeneriucsList = new ArrayList();
List <String> strList = new ArrayList<>();
noGenericsList.add("aaaaaa");
noGenericsList.add(1111);
// 제네릭을 지정하지 않아 어떤 데이터 형식인지 판단하려면 입력된 곳을 찾아가야 알 수 있다.
try{
for(int i = 0; i < noGenericsList.size();i++){
String str = (String) noGenericsList.get(i);
System.out.println("index["+i+"]데이터:" + str);
}
} catch(exception e){
System.out.println("오류가 발생하였습니다.");
}
for(int i = 0; i < strList.size();i++){
String str = strList.get(i)
System.out.println("index["+i+"]데이터:" + str);
}
}
}
-> 실행 결과