Dmi*_*sky 14 java reflection annotations
我想创建自己的注释来注释一些局部变量.编写注释不是问题,问题是在运行时获取它们的信息.我只能从带注释的方法或方法参数中获取一些信息,但不能从局部变量中获取.有没有办法得到它?
我自己的注释是这样的:
public void m(int a)
@MyOwnAnnotation(some information)
int b = 5;
}
Run Code Online (Sandbox Code Playgroud)
或者,作为替代方案,有没有办法获取方法的代码,进一步解析它,最后得到注释值?
提前致谢.
Pom*_*Pom 20
使用反射,您无法检索局部变量.因此,您无法通过反射检索局部变量上的注释.我认为这种注释仅用于编译器警告.
您可以查看http://www.eclipse.org/aspectj/doc/released/adk15notebook/annotations.html
无论注释类型上设置的保留策略如何,本地变量注释都不会保留在类文件中(或在运行时).见JLS 9.6.1.2.
如果您不想检索方法代码,可以使用JavaParser(http://javaparser.org/).
mer*_*nst 12
从Java 8开始,局部变量注释保留在类文件中.正如Erick Hagstrom所指出的,这个长期存在的错误由JSR 308修复,它还为Java语言添加了类型注释.
但是,Java的反射API尚未更新,无法在方法体内进行访问.您需要自己解析类文件.您可以使用ASM等工具.我不推荐使用JavaParser,因为它还没有在Java 1.5之外更新.
| 归档时间: |
|
| 查看次数: |
7582 次 |
| 最近记录: |