我想实现一个功能,以便我们使用
注释方法@Skip(type = Execution.TRUE)
然后该方法将不会被执行。我已经定义了自己的注释,如。
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface Skip {
Execution type() default Execution.FALSE;
}
并且在方法定义中我已经这样定义..
@Skip(type = Execution.TRUE)
static void show(){
System.ou.println("Hi");
}
现在如果我们从main()方法调用show()方法。
此方法不会被执行。我怎么能实现它?
答案 0 :(得分:2)
基本上通过创建自己的java代理程序,如果要调用的任何方法都带有该属性,它将在运行时检查。然后跳过执行。
或者,也许可以提供一段在编译时触发的代码。也许你可以对其进行微调,以防止将方法调用添加到字节码中。
无论如何 - 您可以接受高级挑战。也许您应该退一步并概述您打算以这种方式解决的问题 - 这样我们就可以找到更好的解决潜在问题的方法。
答案 1 :(得分:-2)
如果您正在编写自定义注释,则必须编写 消费者也是如此。 ie)你必须使用java.lang.reflection机制 解析类并根据您的参数调用方法 已经设定。 Java将仅为默认消费者提供消费者 注释