Во-первых, я узнал про effective final. Компилятор теперь сам может узнавать, является ли локальная переменная неизменяемой. Он позволяет использовать такие переменные в лямбда-выражениях и, возможно, будет позволять их использовать в анонимных классах. Теперь можно будет не писать final перед локальной переменной.
Во-вторых, узнал, что в Java будут две, как минимум, реализации лямбда-выражений. Одна, на базе анонимных классов, будет более медленной, но будет позволять, например, сериализацию. Вторая, использующая статический метод и вызов invokedynamic, была недавно добавлена для увеличения производительности.
Помимо обычных лямбда-выражений вида:
(String s) -> System.out.println(s)
x -> x + x
(x, y) -> x + y
будет возможность использовать существующие методы:
- unbound static
Comparator
cmp = Integer::compare;
используется статический метод класса с двумя параметрами- unbound virtual
Comparator
cmp = Integer::compareTo;
используется виртуальный метод класса с одним параметром, где вторым параметром является экземпляр этого класса- bound virtual
Comparator
cmp1 = Integer::compare; Comparator
cmp2 = cmp1::compare;
используется виртуальный метод класса с двумя параметрами
Комментариев нет:
Отправить комментарий