2012-10-24 45 views
4

我不确定是否有办法做到这一点,但我想有一个只对类实现特定接口有效的类的注释。仅对实现特定接口的类有效的Java Annotation?

注释的目的是让管理者知道它需要将该类的一个实例添加到它的一组被管理对象中。因此,如果在编译时无法添加该限制,那么在运行时处理这个问题的最佳模式是什么?

背景: 目前我有一个应用程序,允许用户执行对一组预先定义的操作字符串[]在单个串输出结果中,该动作是由场景分组,我有一个枚举每个场景中定义了这些动作,以及一个具有切换这些枚举的类来调用单个方法(全部在该类中),这意味着添加单个动作涉及代码中几个区域的更改,并且我想增加它通过允许菜鸟开发人员只需要知道他们需要编写的单个类,就可以将该操作添加到正确的列表中并自动提供,从而实现可维护性。

我决定采用的解决方案是开发人员将实现一个Action Interface,然后添加一个注释以注册具有所需场景/场景的Action,并隔离对创建单个类的任何新更改。

回答

2

你可以使用一个marker interface,它在类中或多或少地是注释的前身。如果你定义它来扩展你提到的接口,你可以确定任何标有它的类也实现了你的接口。

另一方面,如果你的接口仅仅因为这个原因而存在,你可以创建规则“实现这个接口的所有类”。

当然,这一切都假设您可以控制管理器创建实例。

+0

换句话说一个空接口?这是不必要的,因为我使用的界面有一些结构,并且足以作为标记?我想要注释,因为管理员将“操作”分隔为适用于不同场景的组。我会为我的问题添加一些背景。 – Link19

+1

是的,一个空的界面。您可以为每个场景制作一个界面,每个界面都扩展您的Action界面。这样,其他开发人员只需要实施适当的场景界面。注解也可以工作,但是在编译时你不能确保实现了正确的接口。 –