Допустим, что есть интерфейс:
interface I {
public int m(Number p);
}и есть реализация этого интерфейса: I o = new I() {
@Override
public int m(Number p) {
return p.intValue();
}
};IDEA подсветила выражение, предложив использовать лямбды. После чего, рефакторинг в одно нажатие изменил код так:
I o = p -> p.intValue();
Но это ещё не всё! IDEA предлагает использовать ссылку на метод:
I o = Number::intValue;
То есть создаётся λямбда с неявным параметром типа
Number, у которого дёргается метод intValue.Остаётся только застрелиться!
PS. Кстати, на основе лямбд можно легко делать lazy-инициализацию. Что мы скоро и сделаем в Swing.