标记接口还是注解?

3

我需要将某些类标记为可调用的,只是为了告诉别人我可以使用反射来调用类的方法。但我不喜欢仅仅为了这个目的而创建一个空接口。是否可以使用注解来实现,并仍然保留下面示例中的行为?(我从未创建过自己的注解,所以对它们不是很熟悉)

示例

class ClassOne implements Invokable {
}

class ClassTwo implements Invokable {
}

void someMethod(Invokable inv) {
}
3个回答

6
因为someMethod的原因,您无法使用注释。也许以后您会发现Invokable仍然需要有用的方法。
另外,在重新发明轮子之前,请务必查看已经存在的接口,如CallableFuture等。

如果我理解正确的话,注释就像一些属性,它们并不影响设计,对吗?那我就使用接口。感谢您的澄清。 - user219882
是的,但你的情况是无法轻松将它们用作类型。例如,如果你将某个类标记为 @Foo ,这 并不意味着 该类实现Foo 接口。 - Ingo

2
您可以使用Class.getAnnotations()获取类的注释,并查找您的Invokable注释。然后,您可以获取要调用的方法并调用它。

2
决定将取决于您如何使用这些类。如果您有许多类,其中一些是可调用的,而另一些不是,则最好使用注释,只需传递对象/类并检查注释即可。如果您知道您将传递的类都是可调用的,则可以选择标记接口。
例如,假设您只想保留行为而不是方法 :-)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接