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()));
람다를 이용하면 열거 타입에서 상수별로 다르게 동작하는 코드를 쉽게 구현할 수 있다.
public enum Operation {
PLUS("+", (x, y) -> x + y),
MINUS("-", (x, y) -> x - y),
TIMES("*", (x, y) -> x * y).
DIVDE("/", (x, y) -> x / y);
private final String symbol;
private final DoubleBinaryOperator op;
//...
}
그렇다고 모든 곳에 람다를 사용하면 되는 것은 또 아니다.
this
키워드는 익명 클래스 자신을 가리키지만 람다에서의 this
는 바깥 인스턴스를 가리킨다.