在注释字段中获取初始化程序

时间:2011-01-14 13:36:40

标签: java annotations

假设我有这门课程:

@Annotate class MyClass { MyField field = new MyField(params); }

在处理注释(new MyField(params)部分)时,如何获取类字段的初始化部分?

我在FieldDeclaration课程中看不到任何相关内容。

1 个答案:

答案 0 :(得分:1)

你不能。

无论您使用reflection还是apt,都无法访问代码块。

  • 通过apt,您可以访问任何可以注释的内容,但是您无法注释初始化程序块(尽管您可以在初始化程序块中访问带注释的局部变量)。
  • 通过反射无法访问代码块(仅限构造函数,字段,方法和类)

如果您对此非常绝望,则需要使用javaparser之类的源解析器或asm之类的字节码工具。两者都理解树结构(前者使用源树,后者使用字节代码树)并且可以处理所有java结构,包括初始化块。

但你最好的选择可能是AspectJ而且它是initialization(ConstructorSignature)切入点。 the pointcuts page上有一些参考,但要真正掌握它,你可能需要阅读AspectJ in Action by Ramnivas Laddad