문법/Java
[Java] Generics(제너릭) & 타입변수
jungmin.park
2023. 12. 8. 22:39
다음 코드를 보자
public class Main {
public static void main(String[] args) {
ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add("30");
Integer i = (Integer) list.get(2);
System.out.println(list);
}
}
- list.add("30")을 넣었을때 그리고 i 형변환을 진행했을때 컴파일에러는 나지 않는다.
- 하지만 RUN을 동작시켜보면 형변환에러 실행시 에러가 발생한다
- 이것은 만약 애플리케이션에서 발생했다면 시스템이 돌아가지 않는 현상이 발생하는 것이다.
ArrayList<Integer> list = new ArrayList();
- 그렇기 때문에 타입을 명시해주기 위해 ArrayList<Object타입>을 명시해준다.
- list.add(10)은 따라서 (Integer)10으로 형변환이 되어 들어가고
- 컴파일에러로 "30"은 list에 넣을 수 없다.
- 컴파일에러로 발견 할 수 있다.
Integer i = //(Integer)// list.get(2);
- 또한 형변환을 굳이 할 필요가 없다.
- 이미 위에서 타입을 명시하고 있기 때문이다.