Как получить информацию о методе FunctionalInterface в java 8 lambda

Я хочу проверить, равны ли два лямбда-метода; Например:

public class App {

    @FunctionalInterface
    public interface TestFunctionInterface {
        void get();
    }

    public static void main(String[] args) throws Throwable {
        TestFunctionInterface t1 = App::print1;
        TestFunctionInterface t2 = App::print1;
        TestFunctionInterface t3 = App::print2;
        System.out.println(t1.equals(t2));
        System.out.println(!t1.equals(t3));
    }

    private static void print1() {
    }

    private static void print2() {
    }
}

выход:

false

true

Моя цель — подтвердить, что две лямбда-функции — это один и тот же метод.

то есть наличие теста, который возвращает true.

Таким образом, могу ли я получить информацию о методе из FunctionalInterface?

Спасибо


person inothing    schedule 24.04.2015    source источник
comment
также связанные stackoverflow.com/questions/19845213/   -  person Radiodef    schedule 24.04.2015
comment
Этот ответ показывает, как вы можете получить целевой метод в конкретном случае, но здесь вы можете узнать, почему это плохая идея. Проще говоря, целевой метод реализации не всегда является целью ссылки на метод, как указано в исходном коде. И может быть несколько разных синтетических целевых методов для одной и той же фактической цели…   -  person Holger    schedule 24.04.2015