Описание тега 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;
Смотрите также: