자바 람다를 가볍게 볼 줄은 생각도 못했네요.
Comparator 인터페이스 논쟁이라길래 또 뭔 싸움인가 보다가...
댓글 보다가...
갑자기 옛날에 자바 최신버전부터 배워야 하냐 옛버전부터 배워야 하나 논쟁이 떠오르네요.
지금 이런 논쟁을 보면 자바 1.8부터 가르치는 게 옳은건지 혼란까지 올 정도였습니다.
혹시 몰랐다면 잘 보세요.
지금 제가 자스 파고 있지만(옛날부터 이미 판 사람이지만) 자바 개념원리는 워낙에 많이 해서 잊고싶어도 못잊는 개발자입니다.
자바의 람다는 인터페이스 없으면 구현 못해요.
이건 같은 객체지향 언어인 C#도 마찬가지입니다.
Comparator 인터페이스의 존재 때문에 Collections.sort 같은 함수에 람다 넣어서 정렬 방식을 정의할 수가 있는 겁니다.
자바 1.8부터 워낙에 흔한 람다 구현 방식을 Supplier<T> Consumer<T> Function<T, R> 등으로 이미 제공하고 있어서 그렇지
람다 받을 때 뭘로 받는지 형식은 선언 안하고 쓰나요? 아니죠? 확실히 아닙니다. 람다 구현에는 인터페이스가 있어서 가능한 겁니다.
저 위에 형식이 아닌 람다를 받아들이려면 인터페이스를 만들어야 합니다. 그것도 @FunctionalInterface 어노테이션까지 붙이면서. (안붙여도 되긴 하지만)
그래서 인터페이스 성격이 뭔지 쓰다보면 모를래야 모를 수 없을 줄 알았는데 그냥 넘어가니까 혼란이 오네요.
옛날에 여기서 자바 var 를 자바스크립트 var 와 혼동한 글도 어질어질한데 최근 신박하게 어질어질한 주제가 나왔네요.
몰라도 된다?
네. 당장엔 몰라도 되겠죠. 옛날 개발자는 그래도 됐으니까요.
하지만 지금은 모르면 안 됩니다. 모르고 넘어갈 수가 없어요. 자바의 강타입 객체지향은 특히
그런데도 시간 지난 뒤 계속 모르고 있다? 그랬을 때 저는 이렇게 말합니다.
