Replies: 2 comments
-
|
Beta Was this translation helpful? Give feedback.
0 replies
-
Gerenic이 나오게 된 배경Object Class의 한계list<Object> list = new ArrayList<>();
list.add("hello");
String msg = list.get(0);
System.out.println(msg); 만약 위의 코드와 같이 작성했다고 가정해보자.
물론, 다음과 같이 type casting을 진행하여 문제를 해결할 수 있다. String msg = (String) list.get(0);
이러한 문제점을 해결하기 위해서 Java 5부터 Generic Type이 등장하게 되었다. Generic을 사용하게 된다면, 들어올 수 있는 타입을 제한할 수 있어, 타입 캐스팅을 할 필요가 없어지게 된다. 또한 ClassCasException이 발생하지 않고, 컴파일러가 타입을 체크해주기 때문에 안정성 또한 높아진다!
그렇다면 둘의 차이점은 무엇일까요? Generic, SubtypeBox<Number> box = new Box<Number>();
box.add(new Integer(10)); // OK
box.add(new Double(10.1)); // OK public void boxTest(Box<Number> n) { /* ... */ }
boxTest(Box<Integer>) ...
boxText(Box<Double>) ...
**boxTest메서드에서 위의 두 코드를 받지 못합니다. 위의 코드를 유심히 살펴보자.
정답은 No 라는 것을 이제는 알 것이다. 반면 Collection class에는 다음과 같은 계층 구조를 가지고 있기 때문에 우리가 혼돈한게 아닐까하는 생각이 든다.
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
자바에서 Generic과 Wildcard의 차이가 무엇일까요?
Beta Was this translation helpful? Give feedback.
All reactions