java-squid / effective-java

effective java 3e study
105 stars 38 forks source link

[아이템 52] 다중정의는 신중히 사용하라 #53

Closed 102092 closed 3 years ago

102092 commented 3 years ago

inexact method reference, implicitly typed lambda expression 설명이 나온 부분 중에, 이제 메서드를 다중 정의할 때, 서로 다른 함수형 인터페이스라도 같은 위치의 인수로 받아서는 안된다..라고 언급하고 있습니다.

tmdgusya commented 3 years ago

상위 클래스를 조심해서 오버로딩해라.. 상당히 실수하기 좋은 부분을 짚어주는것 같네요.

tmdgusya commented 3 years ago

inexact method reference, implicitly typed lambda expression 설명이 나온 부분 중에, 이제 메서드를 다중 정의할 때, 서로 다른 함수형 인터페이스라도 같은 위치의 인수로 받아서는 안된다..라고 언급하고 있습니다.

  • 그 이유로 이제 서로 다른 함수형 인터페이스라도, 근본적으로는 다르지 않다고 이야기하고 있는데,
  • 이게 어떤 의미인지 잘 감이 안오네요.
  • 같이 한번 이야기 나눠봤으면 좋겠습니다

읽어봤는데 어려운 내용이라 다같이 보면서 생각해봐야겠네요. 일단 본문 예제 에서의 키워드는 println 인것 같은데 다중정의 해소 알고리즘에 대해서도 알아봐야 할듯하네요.

david215 commented 3 years ago

@102092 @tmdgusya

102092 commented 3 years ago
david215 commented 3 years ago

@102092

  • println의 메서드의 경우 Runnable, Callable 인터페이스형태로 둘다 반환할 수 있기 때문에 애매하다고 여겨져 컴파일 단계에서 에러가 발생하는 거라고 이해하면 될까요?

조금 더 정확히 들여다보면 println 메서드 중에 Callable 인터페이스의 형태인 경우는 없네요. 아웃풋을 반환하는 경우가 없으니까요. 오버로딩이 되어서 "inexact" 해지는 것 자체에서 컴파일 에러가 발생하는 것으로 보여집니다!