假设我有这门课程:
@Annotate class MyClass {
MyField field = new MyField(params);
}
在处理注释(new MyField(params)
部分)时,如何获取类字段的初始化部分?
我在FieldDeclaration
课程中看不到任何相关内容。
答案 0 :(得分:1)
你不能。
无论您使用reflection还是apt,都无法访问代码块。
如果您对此非常绝望,则需要使用javaparser之类的源解析器或asm之类的字节码工具。两者都理解树结构(前者使用源树,后者使用字节代码树)并且可以处理所有java结构,包括初始化块。
但你最好的选择可能是AspectJ而且它是initialization(ConstructorSignature)
切入点。 the pointcuts page上有一些参考,但要真正掌握它,你可能需要阅读AspectJ in Action by Ramnivas Laddad。