Описание тега method-reference

Ссылки на методы являются частью набора функций лямбда-выражения Java 8.

Ссылки на методы являются частью набора функций лямбда -выражения java-8.

Программист может использовать ссылку на метод в качестве синтаксического ярлыка для лямбда-выражения, если подпись метода совместима с типом функционального интерфейса.

Синтаксис ссылки на метод очень похож на выражение вызова метода, но с двойным двоеточием (::) заменяя точку (.).

// static method reference:
ToIntFunction<String> parseInt = Integer::parseInt;
int i = parseInt.applyAsInt("123");

// instance method reference:
Consumer<Object> println = System.out::println;
println.accept("Hello world!");

// constructor method reference:
Supplier<Object> newObject = Object::new;
Object o = newObject.get();

// array creation method reference:
IntFunction<Number[]> newArray = Number[]::new;
Number[] a = newArray.apply(10);

При работе с универсальными типами аргументы типа могут предоставляться явно или предполагаться.

Supplier<List<String>> listSupplier;

// explicit type argument for a class:
listSupplier = ArrayList<String>::new;
// inferred type argument for a class:
listSupplier = LinkedList::new;
//             ^^^^^^^^^^
//             note: not a raw type in this context!
//             LinkedList<String> will be inferred.

// explicit type argument for a method:
listSupplier = Collections::<String>emptyList;
// inferred type argument for a method:
listSupplier = Collections::emptyList;

Смотрите также: