Прежде всего, FunctionalStuff<T>
определяется следующим образом:
@FunctionalInterface
interface FunctionalStuff<T> {
void execute(final DatabaseOperator database, final T iterator) throws Exception;
}
Ссылка на метод DatabaseOperator::updateInfo
преобразуется в экземпляр типа FunctionalStuff<MyRecord>
(я оставил фактические типы для очистки,но они могут быть опущены):
FunctionalStuff<MyRecord> func = (DatabaseOperator database, MyRecord r) -> database.updateInfo(r);
Или, если вы хотите использовать его как анонимный класс:
FunctionalStuff<MyRecord> func = new FunctionalStuff<MyRecord>() {
void execute(final DatabaseOperator database, final MyRecord r) {
database.updateInfo(r);
}
}
См. учебник со следующим примером:
Ссылка на метод экземпляра произвольного объекта определенного типа
Ниже приведен пример ссылки на метод экземпляра произвольного объектаобъект определенного типа:
String[] stringArray = { "Barbara", "James", "Mary", "John",
"Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, String::compareToIgnoreCase);
Эквивалентное лямбда-выражение для ссылки на метод String::compareToIgnoreCase
будет иметь список формальных параметров (String a, String b)
, где a
и b
- произвольные имена, используемые для улучшенияопишите этот пример.Ссылка на метод будет вызывать метод a.compareToIgnoreCase(b)
.