среда, 18 декабря 2013 г.

IDEA 13 знает про Java 8

В процессе написания теста мне потребовалось выполнить некоторое действие на новом потоке:
UndoManager manager = new UndoManager();
new Thread(new Runnable() {
    @Override
    public void run() {
        manager.undo();
    }
}).start();
IDEA подсветила выражение, предложив использовать лямбды. После чего, рефакторинг в одно нажатие изменил код так:
new Thread(() -> {
    manager.undo();
}).start();
Но и это ещё не всё! Так как сигнатуры методов Runnable.run и UndoManager.undo совпадают, то IDEA предложила мне воспользоваться ссылкой на метод:
new Thread(manager::undo).start();

Красиво-то как! Вот обломается команда поддержки, если им придётся портировать мои тесты в старые версии Java. Да и тестеры будут недовольны, так как сложно проверять наличие ошибок в предыдущих версиях Java. Но ничего, к Java 5 уже все привыкли...