intellij 에서 java 코드를 쓰는 중간에 아래와 같은 경고가 나오는 것을 볼 수 있다.
결론
Raw Type
은 작업하기 어렵고, 버그를 일으킬 수 있습니다. 가능하면 Raw Type
으로 작성하는 일은 지양해야 할 것 같습니다.
Raw use of parameterized class 'List'
List is a parameterized type of interface List while List is a raw type of interface List.
List list = new ArrayList(); // raw type
List<Integer> listIntegers = new ArrayList<>(); // parameterized type
아래와 같은 예시 코드가 있습니다. 빌드 후 실행은 되는 코드 입니다. 하지만, methodB
의 파라메터를 보면 List 라는 Raw Type
으로 작성이 되어있습니다.
그리고 위와 같은 경고 메세지를 보게 됩니다.
@Test
public void methodA() {
List<String> parameterizedList = new ArrayList<>();
parameterizedList.add("Hello Folks");
methodB(parameterizedList);
}
public void methodB(List rawList) { // raw type!
rawList.add(1);
}}
methodB
에 의해서 추가 된 List값을 불러오려고 하면 오류가 납니다. 코드가 컴파일되고(동일한 경고와 함께) 실행될 때 ClassCastException
이 발생합니다. 이것은 method get(int index)
가 String
유형의 변수에 할당할 수 없는 Integer
를 반환할 때 발생합니다.
public void methodA() {
List<String> parameterizedList = new ArrayList<>();
parameterizedList.add("Hello Folks");
methodB(parameterizedList);
String s = parameterizedList.get(1);
}
public void methodB(List rawList) {
rawList.add(1);
}
아래와 같은 methodA
에서 methodB
에서 실행한 값을 가져오려고 하면 에러가 발생합니다.
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String
반응형
'개발' 카테고리의 다른 글
자주 실수하는 git (0) | 2022.10.26 |
---|---|
centos7,8 SSL(HTTPS) 무료인증서 설치 (0) | 2022.10.11 |
axios.post 에 form 데이터를 넣기 (1) | 2018.05.21 |
자신감, 생산성 및 소득을 높이는 23 가지 스마트 방법 (0) | 2018.01.31 |
윈도우 live writer 설치하기 (0) | 2016.11.29 |