다음 코드를 보자
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);
- 또한 형변환을 굳이 할 필요가 없다.
- 이미 위에서 타입을 명시하고 있기 때문이다.
'문법 > Java' 카테고리의 다른 글
[Java] JVM이란 무엇인지? 왜 필요한지? (0) | 2023.12.11 |
---|---|
[Java] 콜백(callback)함수 (1) | 2023.12.08 |
[Java] Template Method/Factory Method/Strategy/Template Callback 패턴 (0) | 2023.11.06 |
[Java] 추상화(Abstraction) (2) | 2023.10.31 |