我正在制作一个小项目,而我目前正在努力实现我需要的功能之一。
基本上我想要一个方法在我调用带注释的方法时执行。例如
@PrintAnnotation
public void print(){
System.out.println("inside method");
打印注释只会打印额外的测试,所以在调用上面的方法时我想得到
"Used print annotation"
"Inside method"
这就是全部。
我正在查看注释处理器API,但除了阅读疯狂的javadoc之外没有任何文档,如果我正确理解它的编译只是因为你不能改变原来的类,只能添加。
我还找到了建议使用反射的答案,但是要使用反射我需要触发代码来检查方法是否注释,但要做到这一点我必须为程序中的每个方法添加一个额外的方法,比如
public void print(){
checkAnnotation();
System.out.println("test");
}
但我需要它只使用添加注释,而不是每个类的每个方法中有数百行。
答案 0 :(得分:1)
通过"仅注释"是不可能的。没有第三方库,也没有自定义代码。
注释只是一个注释,没有别的。
这意味着您必须拥有print
和checkAnnotation
方法,这些方法会检测您所需目标(类,方法,字段......)上Annotation
的存在,并执行您的操作#39; d喜欢。 System.out.println("test");
肯定不会这样做。
如果您使用这些print
和checkAnnotation
方法,请使用这些方法创建实用程序,然后从任意位置调用print
,而不是System.out.println
。
但实际上,你试图实现的是关于AOP。您的自定义注释可以与它一起使用。
然后,您使用spring
标记标记了问题,您使用Spring吗?它是一组第三方库并具有AOP。