如何在程序级别确定某些java类/接口的存在?

时间:2015-02-12 07:55:56

标签: java annotations strategy-pattern

我正在为我的项目使用简单的策略模式。 我需要在某些枚举中添加每个具体的策略接口类以供以后使用。 为方便起见,我使用的是临时接口,应该在以后更换,而不是先实现每个具体的类来完成设计。

这是我尝试过的简单代码。

public interface Strategy{
    public void execute();
}

public interface NeedToImplement extends Strategy {

}

public enum strategyInfo {
    A(ConcreteStrategyA.class, "blah blah" ), 
    B(ConcreteStrategyB.class, "blah~~" ),
    C(NeedToImplement.class, "blah~~");
}

到目前为止,如果我是唯一管理此代码并且不忘记实现每个类的人,那么代码本身就不会成为问题。 但这是团队工作,我会为我的团队成员拆分每个实现,所以,如果我们的团队成员忘记实现任何类,那么即使在运行时也会造成灾难。

我想确保在我通过异常或错误运行程序时NeedToImplement存在时会收到通知(就像我可以从@Deprecated收到警告) 虽然我仍然可以在没有代码编译错误的情况下进行编译。

我想到的第一个想法是为NeedToImplement界面使用自定义注释。但实际上我不确定进一步的细节。 如果我的想法有效,请详细说明细节。 如果没有,任何比Ctrl + F更好的建议也将受到赞赏。

2 个答案:

答案 0 :(得分:1)

你可以做的是:

  1. 使用JavaDoc中的@Depreceated标记标记您的临时界面。您还可以提供有关开发人员应该使用什么/何时使用的信息。

  2. 要检查接口是否存在,您可以做的另一件事就是使用JUnit之类的内容连接一个简单的单元测试,这些内容将在您的代码编译时运行。大多数编译工具(如ANT或Maven)应允许您在编译周期结束时附加测试脚本。如果测试失败,那么,您的临时界面仍然存在。

答案 1 :(得分:0)

你可以在execute()方法中创建每个类的新实例,我想这将为项目中的每个动作或类似实现

您为稍后要实现的每个类创建一个空类,并在每个构造函数中为您选择发出警告