"带注释的"lambda表达式而不是单个apply方法的接口

S1l*_*0rm 5 java lambda java-8

而不是像这样使用匿名类

register(new EventListener() {
  @Override
  public void apply(Event e) {
    // do your work
  }
});
Run Code Online (Sandbox Code Playgroud)

使用java 8我可以使用lambda表达式:

register(e -> (// do your work));
Run Code Online (Sandbox Code Playgroud)

但是如果我的界面中的方法被注释呢?

interface EventListener {
  @Annotation
  void apply;
}
Run Code Online (Sandbox Code Playgroud)

是否可以注释lambda表达式?(具体来说,我想使用带有lambda表达式的Guava的EventBus.register()方法)

San*_*oit 3

看看这个:

注释 Lambda 表达式的函数接口

基本上,您不能直接在 lambda 表达式中进行注释,但您可以使用扩展接口或类并通过调用 来访问注释Class#getAnnotatedInterfaces()。我相信这应该回答你的问题。

希望这可以帮助,

圣地亚哥