경험 및 후기
(오답노트) 상속, 컬렉션 프레임워크 오답
주니홍
2022. 6. 27. 16:18
틀린문제 부분
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class A{ A(){ this("멍멍"); } A(String str){ System.out.println(str); } } class B extends A{ B(String str){ super(str); System.out.println("야옹"); } } class C extends B{ C(String str){ super("삐약"); System.out.println(str); } } public static void main(String[] args) { C c=new C("어흥"); } | cs |
해당 코드에서 extends 한 클래스를 확인하고
C("어흥")의 생성자를 생성했을때 출력의 순서를 잘 알고있는지
확인하는 문제
틀린이유
extends 클래스
클래스의 이름을 확인을 잘하지 못했다
첫풀이에서 상속받는 클래스를 확인하며 정답을 적었지만
검토부분에서 수정을 하게되었는데, 이 수정부분에서
위의 실수를 하게 된다..!
항상 중요한부분을 중점으로 두고 검토하도록 하자
항상 extends를 만나면 어떤 클래스를 상속받았는지 확인하기!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | ArrayList al=new ArrayList(2); al.add(1); al.add(2); al.add(0); al.add(-1); al.add(-2); try { System.out.print(al.size()); for(Object obj:al) { System.out.print(10/obj+" "); } } catch(Exception e) { System.out.print("HELLO"); } finally { System.out.print("JAVA"); } System.out.print("WORLD"); | cs |
해당코드는 실행이 되지않는 오류 코드이다
코드의 수정 (1) 그리고 수정후 출력값(2)을 적어라
틀린이유
ArrayList를 객체화하며 int값만 넣는것을 보고
< > 제네릭의 불편함을 느꼈어야했다
내가 수정한 부분은10 / (int) obj + " "를 이용하여
타입캐스팅하여출력하면 오류없이 출력하는것이라 생각했다
정답
ArrayList를 사용할땐 < > 제네릭의 중요성을 느껴야한다
그래서 수정의 최우선은 < > 을 만들어 주는 것이였고
< Integer >로 만들어줌과 동시에
조건식의 값을Object obj ㅡ> int obj로 바꿔준다면 되겠다
내가 수정한 부분인 타입캐스팅도 정답일 순 있으나
그보다 더 좋은 코딩방법이 존재했기에 오답이다
ArrayList 및 컬렉션 프레임워크를 사용할땐
< > 제네릭을 중요하게 생각해야 할 것이다
파일 관련 자료형 저장에 안정성도 챙기고
자료형에 확신을 가지고 조건식을 세울 수 있기 때문이다
컬렉션 프레임워크에서 < > 제네릭을 이용하여
자료형의 타입을 정해주고 시작하는 것이 중요!!