Closed 102092 closed 3 years ago
상위 클래스를 조심해서 오버로딩해라.. 상당히 실수하기 좋은 부분을 짚어주는것 같네요.
inexact method reference, implicitly typed lambda expression 설명이 나온 부분 중에, 이제 메서드를 다중 정의할 때, 서로 다른 함수형 인터페이스라도 같은 위치의 인수로 받아서는 안된다..라고 언급하고 있습니다.
- 그 이유로 이제 서로 다른 함수형 인터페이스라도, 근본적으로는 다르지 않다고 이야기하고 있는데,
- 이게 어떤 의미인지 잘 감이 안오네요.
- 같이 한번 이야기 나눠봤으면 좋겠습니다
읽어봤는데 어려운 내용이라 다같이 보면서 생각해봐야겠네요. 일단 본문 예제 에서의 키워드는 println 인것 같은데 다중정의 해소 알고리즘에 대해서도 알아봐야 할듯하네요.
@102092 @tmdgusya
println
메서드가 오버로딩이 된 메서드가 아니었다면 컴파일 에러가 나지 않을 것이라고 했는데 예시 코드를 좀 짜봤습니다.submit
의 경우 Runnable 혹은 Callable 이라는 함수형 인터페이스를 받네요.@102092
- println의 메서드의 경우 Runnable, Callable 인터페이스형태로 둘다 반환할 수 있기 때문에 애매하다고 여겨져 컴파일 단계에서 에러가 발생하는 거라고 이해하면 될까요?
조금 더 정확히 들여다보면 println 메서드 중에 Callable 인터페이스의 형태인 경우는 없네요. 아웃풋을 반환하는 경우가 없으니까요. 오버로딩이 되어서 "inexact" 해지는 것 자체에서 컴파일 에러가 발생하는 것으로 보여집니다!