如何让java方法注释在scala中工作
我有两个项目,一个scala项目和一个java项目。我的scala项目引用构建路径中的java项目。在我的java项目中,我声明以下注释:如何让java方法注释在scala中工作,java,scala,reflection,scala-java-interop,Java,Scala,Reflection,Scala Java Interop,我有两个项目,一个scala项目和一个java项目。我的scala项目引用构建路径中的java项目。在我的java项目中,我声明以下注释: @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @interface MyAnnotation { public String Name(); } 在我的scala项目中,我注释了一些方法。即 class MyClass { ... @My
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String Name();
}
在我的scala项目中,我注释了一些方法。即
class MyClass {
...
@MyAnnotation(Name="Blah")
def myMethod() {
...
}
}
在另一个文件的某个地方,我正试图拉出注释
var methods = myClassInstance.getClass().getDeclaredMethods()
var myMethod : Method = null
for (method <- methods) {
if (method.getName().equals("myMethod")) {
myMethod = method
}
}
var annotations = myMethod.getDeclaredAnnotations()
var methods=myClassInstance.getClass().getDeclaredMethods()
var myMethod:Method=null
对于(method我尝试了您的代码,问题是您对myMethod使用@MyAnnotation两次,这会引发AnnotationFormatError:Duplicate annotation for class
当我改为使用它一次时,反射只检索注释。谢谢你指出这一点。不幸的是,这不是问题所在。即使有一个注释,我仍然得到一个空数组。没有例外。你是如何做到这一点的?你能举个例子吗?谢谢!正如我所说,我只是使用你发布的代码。你的帖子ed代码引发异常(第一个版本),并且有编译错误(第二个版本,您应该为“var myMethod=null”行定义类型)我的scala版本是2.9.3谢谢你的帮助。我从2.8.3升级到2.9.3,不再引用java项目,而是在同一个项目中混合使用java和scala。看起来很有效。