Open gmelon opened 1 year ago
-> 이거는 결국 런타임엔 List\<String> 과 List\<Integer> 이 동일하기 때문에 문제없이 매개변수화 할 수 있다. 이 말인 것 같구요. 근데 이 경우 UnaryOperator\<Object> 뭐 이런거 처럼 Object로 선언된 경우만 가능한걸까요..???
이 말은 위의 연장선인 것 같네요. 하나의 객체를 하나의 메서드를 사용해 어떤 타입으로든 매개변수화 할 수 있으니깐 항등 함수가 타입별로 하나면 충분하다는 이야기 인 것 같아요.
Collections.reverseOrder() 메소드(if문 많은 것)보면 파라미터는, Compartor
만약 제네릭이 실체화되지 않는 버전인경우 :
우리가 Compartor
따라서 현재 버전인 실체화 되지 않는 제네릭이라면 : 파라미터가 Comparator cmp로 그냥 로타입으로 바뀜(런타임시), 그래서 String, Integer 어떤 타입이 와도 이 메소드하나로 해결 가능
참고 내용
p.177에 나오는 제네릭 싱글턴 팩터리 관련된 내용이 이해하는데 시간이 좀 걸렸어서 제가 이해한대로 우선 예시 코드를 (본문 내용별로) 적어봤습니다.
런타임에 타입 정보가 소거 되므로 하나의 객체를 어떤 타입으로든 매개변수화 할수 있다
하지만 이렇게 하려면 요청한 타입 매개변수에맞게 매번 그 객체의 타입을 바꿔주는 정적 팩터리를 만들어야 한다. 이러한 패턴을 제네릭 싱글턴 팩터리라 한다
(실제 emptyList()가 반환에 사용하는 객체는 제네릭의 로우타입 인스턴스 → 이를 어떤 타입으로던 매개변수화 할 수 있도록 메서드를 생성해 사용함)
질문
그런데 위 내용과 별개로,, 마찬가지로 p.177에 보시면
라고 되어 있는데, 이 문장이 아직 정확하게 이해되진 않네요 조금 더 찾아보고 답변 달아두겠습니다아