문법/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);
  • 또한 형변환을 굳이 할 필요가 없다.
  • 이미 위에서 타입을 명시하고 있기 때문이다.