内省“ ::”双冒号表示法中的方法引用吗?

时间:2018-12-13 04:04:49

标签: java reflection

假设我有一堆带有方法的类,例如

class A {
   public void foo();
}

可以在另一个类中编写函数吗?

public String getMethodName(Function<?> func) { ... }

例如,在使用任何方法引用进行调用时

String val = getMethodName(A::foo);

是否将方法的名称作为String返回,在此示例中为"foo"

1 个答案:

答案 0 :(得分:0)

只能通过字节码反编译,因为

foo(Baz::bar)

是...的语法糖

class SomeFakeName implement Interface {
   public void methodName() {
        Baz.bar();
   }
}

foo(new SomeFakeName())

我假设以下声明:

void foo(Interface p){}
interface Interface {
    void methodName();
}