我正在尝试将 Java 库 (JOhm) 与 Scala 一起使用,并注意到当 lib 尝试使用类似field.isAnnotationPresent(Id.class)
.
注释在 Java 中定义为:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface Id {
}
所以它们应该在运行时可用。但是,如果我尝试:
scala> import redis.clients.johm._
import redis.clients.johm._
scala> class myClass(@Id var id: java.lang.Long)
defined class myClass
scala> new myClass(id = null)
res0: myClass = myClass@5157cfbc
scala> res0.getClass.getDeclaredFields
res1: Array[java.lang.reflect.Field] = Array(private java.lang.Long myClass.id)
scala> res0.getClass.getDeclaredFields.map(_.getAnnotations)
res2: Array[Array[java.lang.annotation.Annotation]] = Array(Array())
然后我设法获取了这些字段(感谢 StackOverflow 用户……),但我仍然无法访问注释。我做错什么了?