경험 및 후기

(오답노트) 상속, 컬렉션 프레임워크 오답

주니홍 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 및 컬렉션 프레임워크를 사용할땐

< > 제네릭을 중요하게 생각해야 할 것이다

파일 관련 자료형 저장에 안정성도 챙기고

자료형에 확신을 가지고 조건식을 세울 수 있기 때문이다

 

컬렉션 프레임워크에서 < > 제네릭을 이용하여
자료형의 타입을 정해주고 시작하는 것이 중요!!