scala方法参数的java注释

scala方法参数的java注释,scala,syntax,annotations,Scala,Syntax,Annotations,我在学scala。我想在scala方法参数上添加一个java注释(比如lombok的@NotNull)。但当我写作时: def a(@NotNull o : Object) = {} 我得到一个编译错误:trait NotNull是抽象的;无法实例化 另外,我不是问如何确保scala中的NOTNULL。我在问如何使用java注释,这是在scala中使用java注释的正确方法 scala> import java.lang.annotation._ ... scala> def a(

我在学scala。我想在scala方法参数上添加一个java注释(比如lombok的
@NotNull
)。但当我写作时:

def a(@NotNull o : Object) = {}
我得到一个编译错误:
trait NotNull是抽象的;无法实例化


另外,我不是问如何确保scala中的NOTNULL。我在问如何使用java注释,这是在scala中使用java注释的正确方法

scala> import java.lang.annotation._
...
scala> def a(@Retention(RetentionPolicy.RUNTIME) o: Object) = {}
a: (a: Object)Unit
顺便说一下,
NotNull
是特定于scala的,这是导致错误的原因。
没有Lombok@NotNull;有一个Scala@NotNull和一个Lombok@NonNull

Scala的@NotNull从未正确实现过,在2.11中已被弃用(删除了实现)。看见因此,如果这是一个主题,这个问题可能是没有意义的

如果Lombok@NonNull在Scala源代码中工作,我会感到惊讶。Lombok使用(Java)编译时注释处理器。由于Scala直接编译为字节码,因此不会调用Java注释处理器


因为这两种方法都没有用,所以您可能需要四处询问其他方法。

您是对的。我的ide混淆了注释。修复后,我没有更多的编译器错误。仍然没有检查lombok是否与scala一起工作