Ссылки на методы в Java 8
Ссылка на метод указывает на метод по его имени.
Ссылки на методы позволяют сделать языковые конструкции более компактными и лаконичными, сокращая избыточный код.
Ссылки на методы используют пару двоеточий:: 。
Ниже мы определяем 4 метода в классе Car в качестве примеров, чтобы различать 4 различных типа ссылок на методы в Java.
-
Ссылка на конструктор:Её синтаксис — Class::new, или, в более общем случае, Class< T >::new. Пример:
final Car car = Car.create( Car::new ); final List< Car > cars = Arrays.asList( car ); -
Ссылка на статический метод:Её синтаксис — Class::static_method. Пример:
cars.forEach( Car::collide ); -
Ссылка на метод для произвольного объекта определённого класса:Её синтаксис — Class::method. Пример:
cars.forEach( Car::repair ); -
Ссылка на метод для конкретного объекта:Её синтаксис — instance::method. Пример:
final Car police = Car.create( Car::new ); cars.forEach( police::follow );
Примеры ссылок на методы
Введите следующий код в файл Java8Tester.java:
Файл Java8Tester.java
В примере мы ссылаемся на метод System.out::println как на статический метод.
Выполните приведенный выше скрипт, и вывод будет:
$ javac Java8Tester.java $ java Java8Tester Google Example Taobao Baidu Sina
Другие расширения
Новые возможности Java 8