glenn-syj / more-effective-java

이펙티브 자바를 읽으며 자바를 더 효율적으로 공부합니다
4 stars 5 forks source link

[MEJ-007] 제네릭 싱글턴 패턴과 항등함수에 대한 질문 #152

Closed FickleBoBo closed 1 month ago

FickleBoBo commented 2 months ago

Based on : #145 by @yngbao97

제네릭 파트는 전반적으로 많이 어렵다고 느껴지는데 요약 및 탐구를 잘 진행해주셔서 학습에 많은 도움이 되는 것 같습니다.

교재의 내용에서 제네릭 싱글턴 메서드와 항등함수가 특히 어려웠던거 같은데 교재 p.178에서 항등함수는 입력 값을 수정 없이 그대로 반환하는 함수로 나와있고, 제네릭 싱글턴을 사용할 때 를 통해 입력에 맞게 타입 변환만 해서 유연하게 사용하는 것처럼 보였습니다.

이러한 내용을 통해 UnaryOperator<Integer> uo = t -> t*2; 와 같이 사용하는 것이 제네릭 싱글턴 패턴인지 헷갈려서 질문드립니다.

감사합니다.

yngbao97 commented 2 months ago

질문 감사합니다. 제가 이해한 바에 따르면 교재 p178에 나온 항등함수에 관한 언급은 UnaryOperator를 사용함에 있어 타입 안전을 보장한다는 내용을 사용된 예시 코드를 통해 설명하기 위한 것으로 생각됩니다. 제네릭 싱글턴 팩터리 패턴에 항등함수만을 사용해야 하는 것이 아니라, 코드 작성자가 UnaryOperator의 구현부가 타입 안전하다고 보장(@SuppressWarnings 애너테이션)할 때 제네릭 싱글턴 팩터리 패턴이라고 볼 수 있을 것 같네요.

FickleBoBo commented 2 months ago

작성해주신 답변을 읽어보고 교재 p178을 다시 보니 제네릭 싱글턴 팩터리 패턴은 타입 안전을 보장하는 것이 핵심이고, 항등 함수는 애초에 타입 안전을 보장해서 둘을 구분해서 먼저 학습하고 이후 합치는 과정에서 교재 내용을 충분히 학습할 수 있을 것 같다는 생각이 들었습니다. 둘을 동일한 개념처럼만 생각해서 어려움이 있었는데 앞으로 학습에 많은 도움이 되었습니다. 좋은 답변 감사합니다.