Java 8:获取Consumer <?>底层函数注释

Agu*_*rez 1 java lambda java-8

有没有办法在Consumer表达式上访问方法的注释?

public void <T> addListener(Consumer<T> consumer)
{
    consumer.getClass().getAnnotation(Handler.class); // Like this
}

@Handler
public void myListener(Integer x) {
}

addListener<Integer>(this::myListener);
Run Code Online (Sandbox Code Playgroud)

Mar*_*nik 5

你得到的不是具有@Handler-annotated方法的类的实例.这应该是显而易见的 - 该类甚至没有实现Consumer.你得到的一个特设的实现Consumer,其accept方法委托myListener().因此,从纯粹的概念角度来看,你的问题的答案是"不".