Создание ссылки на функцию и передача в качестве параметра локального метода (Java) - PullRequest
1 голос
/ 13 марта 2019

У класса есть ссылка на другой экземпляр (с автоматической связью через Spring)

public class Instance1 {
    public void m1(String args) {
        System.out.println(arg);
    }
    public void m2(String args) {
        System.out.println(arg);
    }
    public void m3(String args) {
        System.out.println(arg);
    }
}

public class process() {

@AutoWire
    public Instance1 instance1

    public void processA() {
        // Get a reference to m1, m2, or m3
        processB(<pass referrnce here>);
    }
    public void processB(<accept reference to m1, m2 , m3 here>) {
        // Call either m1, m2, or m3
    }
}

Этот экземпляр включает в себя 3 метода, скажем, m1, m2 и m3. Я хочу иметь возможность установить ссылку на каждый из этих методов и передать его в качестве параметра другому локальному методу, который будет вызывать либо m1, m2 и m3.

1 Ответ

0 голосов
/ 13 марта 2019

Вы можете создать Consumer для каждого метода:

public void processA() {
    processB(instance1::m1, instance1::m2, instance1::m3);
}

public void processB(Consumer<String> c1, Consumer<String> c2, Consumer<String> c3) {
    c1.accept("Arg");
    c2.accept("Arg");
    c3.accept("Arg");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...