java - "Annotated"lambda 表达式而不是具有单一应用方法的接口(interface)

标签 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)中的方法被注释了呢?

interface EventListener {
  @Annotation
  void apply;
}

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

最佳答案

看这个:

Annotating the functional interface of a Lambda Expression

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

希望对您有所帮助,

圣地亚哥

关于java - "Annotated"lambda 表达式而不是具有单一应用方法的接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23968736/

相关文章:

c# - 在运行时创建 LINQ 查询到 EntityFramework 中的 GroupBy(具有继承)

Java Stream_Don't apply filter if my filter string is null

java - 执行代理查找时出现重复 session 错误

java - 如何使用 Camel 将大文件发送到ActiveMQ

c# - 有没有办法同步运行异步 lambda?

Java 流 : filter(). count() 与 anyMatch()

java - 从 HashMap 获取值并填充 Java 对象

java - 如何为实例变量设置默认值?

java - 有没有 Selenium 的替代品?

c# - 从 MemberExpression 和 Constant 创建 Func<T, bool>