Jor*_*dan 8 java reflection scala scala-java-interop
我有两个项目,一个scala项目和一个java项目.我的scala项目引用了构建路径中的java项目.在我的java项目中,我正在声明以下注释:
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String Name();
}
Run Code Online (Sandbox Code Playgroud)
在我的scala项目中,我正在注释一些方法.即
class MyClass {
...
@MyAnnotation(Name="Blah")
def myMethod() {
...
}
}
Run Code Online (Sandbox Code Playgroud)
在某个地方的另一个文件中,我正在尝试提取注释.
var methods = myClassInstance.getClass().getDeclaredMethods()
var myMethod : Method = null
for (method <- methods) {
if (method.getName().equals("myMethod")) {
myMethod = method
}
}
var annotations = myMethod.getDeclaredAnnotations()
Run Code Online (Sandbox Code Playgroud)
不幸的是,annotations总是一个空数组.我做了一些根本错误的事情,还是我只是遗漏了一些小事?谢谢!
编辑
最初,我用myAnnotation两次注释myMethod,这是不正确的,正如有人指出的那样.事实证明这不是问题.我仍然得到一个空数组annotations.没有例外被抛出.
我尝试了你的代码,问题是你使用@MyAnnotation两次myMethod,它应该引发AnnotationFormatError:类的重复注释
当我改为使用它一次时,反射只是检索注释.
| 归档时间: |
|
| 查看次数: |
2810 次 |
| 最近记录: |