java-squid/effective-java

[아이템 38] 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라

Closed this issue · 3 comments

[아이템 38] 확장할 수 있는 열거 타입이 필요하면 인터페이스를 사용하라

p235 예시 코드 바로 밑에,
... 반면, 특정 연산에서는 EnumSet과 EnumMap을 사용하지 못한다..

  • 어떠한 특정 연산에서 왜 사용하지 못하는 걸까요..?

특정 연산이라는 뜻이 첫번 째 방법(T extends Enum & Operation>)을 의미하는 것 같습니다. p235의 예시 코드 장점에서 유연하고 여러 구현 타입의 연산을 조합해 호출할 수 있다고 설명이 있습니다.
또 다른 곳을 찾아보니 두번째 방법(Collection<? extends Coperation>) 방법이 EnumSet, EnumMap을 사용할 수 있는 유연성을 가지고 있다고 하네요.

  • extends Enum<T>.. 에서는 한정되어있기 때문에 EnumSet, EnumMap을 사용하지 못한다.
  • Collection<? extends Coperation> 을 사용하면, EnumSet,EnumMap을 사용할 수 있다. 즉 유연해졌다.
    • 그 대신에, 받는쪽을 Collection 으로 받는 것이 필요해졌다.