是否有任何方法可以强制使用某些特定的注释以及Java中的某些特定方法

时间:2016-03-17 11:12:26

标签: java annotations

实现接口的类确保接口中的所有方法都在类中定义,同样,有没有办法告诉JVM应该在实现类时使用某些特定的注释。请考虑以下界面

public interface TestClass{
    @BeforeClass
    public void setup();
    @AfterClass
    public void tearDown();
}

以下是实施类

public class TestScripts implements TestClass{
    @BeforeClass
    public void setup(){
        /*method body*/
    }
    @AfterClass
    public void tearDown(){
       /*method body*/
   }
}

我想要的是,如果@BeforeClass注释未与方法public void setup()一起使用,并且@AfterClass注释未与方法public void tearDown()一起使用,则编译器应显示错误。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:4)

您无法强制执行此操作,但您可以强制执行的是子类实现抽象方法。

public abstract class TestClass {
    @BeforeClass
    public void beforeClass(){
        setup();
    }

    protected void abstract setup();

    @AfterClass
    public void afterClass(){
       tearDown();
   }

    protected void abstract tearDown();
}

然后任何子类都必须实现这些方法,它们将根据注释进行调用。