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

时间:2014-05-31 10:08:46

标签: java lambda java-8

而不是像这样使用匿名类

register(new EventListener() {
  @Override
  public void apply(Event e) {
    // do your work
  }
});

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

register(e -> (// do your work));

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

interface EventListener {
  @Annotation
  void apply;
}

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

1 个答案:

答案 0 :(得分:2)

见:

Annotating the functional interface of a Lambda Expression

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

希望这有帮助,

圣地亚哥