코딩항해기
[오답노트/JAVA] JAVA 시험 오답풀이 본문
JAVA 시험 문제 중 틀린 문제가 있어 오답노트를 작성한다.
컬렉션 프레임워크가 제네릭없이 선언할 수 있고, 제네릭이 없을 때 생기는 문제에 대해서는 알았는데,
for each문을 돌릴 때 모두 동일한 타입의 값만 있어도 해당 타입으로 설정할 수 없다는 사실을 오늘 처음 알게 됐다..
(=> 기본 타입이 Object라서)
문제 코드
(Q. 오류가 생기는 라인을 찾고 이유를 서술하시오)
public static void main(String[] args) {
ArrayList datas=new ArrayList();
for(int i=1;i<=5;i++) {
datas.add(i); // [1,2,3,4,5]
}
int total=0;
for(int v:datas) {
total+=v;
}
System.out.println("total: "+total); // total: 15
}
이처럼 제네릭을 사용하지 않고 선언하면 for(int v:datas){}, for each문에서 컴파일 오류가 발생한다.
제네릭을 지정하지 않을 경우 모든 타입이 들어올 수 있도록 Object 타입으로 설정되어있기 때문에 int로는 변환이 불가하다고 안내하고 있는 것을 확인할 수 있다.
즉, 오류가 발생하는 코드 라인은 for(int v:datas) (line : 7)이고, 해결방안은 ArrayList를 선언할 때 제네릭을 Integer타입으로 설정하면 된다.
추가로 틀린 부분은 디버깅표였는데, 이건 순수한 실수라... 따로 오답노트를 작성하진 않았다.
(문제에 나와있는 첫번째 줄을 생략하고 작성하며 검토하다 존재하지 않는 줄을 추가함...ㅠㅠ)
그 외에도 정답이었지만 아쉬웠던 답안들이 많아서 답안을 작성할 때 특정 키워드가 들어갈 수 있게 답하는 부분을 연습해야 할 것 같다.