Вы можете ссылаться на методы экземпляра также, как и статические методы.
Только теперь в начале до :: будет идти не имя класса, а имя экземпляра класса.
containingObject::instanceMethodName
package io.khasang.lambda.devpath;
import java.util.function.Consumer;
public class Main7 {
void printHello(String name) {
System.out.println("Hello " + name);
}
public static void main(String[] args) {
Consumer<String> printHello1 = (String name) -> {
System.out.println("Hello " + name);
};
// так не получится
// printHello1("Valdemar"); // Error: java: cannot find symbol symbol: method printHello1(java.lang.String) location: class io.khasang.lambda.devpath.Main7
// нужно так, нужно вызвать единственный метод из фунционального класса Consumer
printHello1.accept("Valdemar");
Main7 main = new Main7();
Consumer<String> printHello = main::printHello;
// так не получится
// printHello("Valdemar"); // Error: java: non-static method printHello(java.lang.String) cannot be referenced from a static context
// нужно так, нужно вызвать единственный метод из фунционального класса Consumer
printHello.accept("Valdemar");
}
}