在Java中跳过方法执行

时间:2017-05-26 11:11:44

标签: java annotations

我想实现一个功能,以便我们使用

注释方法

@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()方法。

此方法不会被执行。我怎么能实现它?

2 个答案:

答案 0 :(得分:2)

基本上通过创建自己的java代理程序,如果要调用的任何方法都带有该属性,它将在运行时检查。然后跳过执行。

或者,也许可以提供一段在编译时触发的代码。也许你可以对其进行微调,以防止将方法调用添加到字节码中。

无论如何 - 您可以接受高级挑战。也许您应该退一步并概述您打算以这种方式解决的问题 - 这样我们就可以找到更好的解决潜在问题的方法。

答案 1 :(得分:-2)

  

如果您正在编写自定义注释,则必须编写   消费者也是如此。 ie)你必须使用java.lang.reflection机制   解析类并根据您的参数调用方法   已经设定。 Java将仅为默认消费者提供消费者   注释