JDK 1.1이 등장하면서 함수 객체를 만드는 주요 수단은 익명 클래스가 됐다.
//익명 클래스의 인스턴스를 함수 객체로 사용
//낡은 기법
//Comparator interface가 정렬 담당하는 추상 전략 뜻함
Collections.sort(words, new Comparator<String>(){
//문자열 정렬하는 구체적 전략을 익명 클래스로 구현
public int compare(String s1, String s2){
return Integer.compare(s1.length(), s2.length());
}
});
→ 익명 클래스 방식은 코드가 너무 길어 자바는 함수형 프로그래밍에 적합하지 않음
→ 자바 8부터 추상 메서드 하나짜리 인터페이스는 특별 대우를 받게 됨
Collections.sort(words, (s1,s2) -> Integer.compare(s1.length(), s2.length()));
Collections.sort(words, comparingInt(String::length));
words.sort(comparingInt(String::length));