Go to the home page  / Java  / Функциональное программирование  / Ссылки на методы  / Ссылка на метод экземпляра

Ссылка на метод экземпляра

Igor Lazarevsky, 2022.02.04 13:09

Вы можете ссылаться на методы экземпляра также, как и статические методы.

Только теперь в начале до :: будет идти не имя класса, а имя экземпляра класса.

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");

    }
}
Igor Lazarevsky, 2022.02.04 13:16