2011-12-01 60 views
3

我需要将一些类标记为可调用 - 只是为了告诉我可以使用反射来调用该类的方法。但我不喜欢只为此目的而设置一个空接口的想法。这可以通过注释来完成,并且仍然保留以下示例的行为? (我从来没有创建了自己的注解,所以我就不深入熟悉它们)标记界面或注释?

Example

class ClassOne implements Invokable { 
} 

class ClassTwo implements Invokable { 
} 

void someMethod(Invokable inv) { 
} 

回答

6

因为someMethod,你不能使用注释。也许以后你会发现Invokable无论如何可能需要有用的方法。

此外,在重新发明车轮之前,一定要检查已有的接口,如CallableFuture等。

+0

的方法。如果我的理解,注释就像不影响设计可言的一些性质,不是吗?然后我使用界面。谢谢你的澄清。 – user219882

+0

是的,但在你的情况下,你不能轻易地将它们用作类型。例如,如果您将某个类标记为“@ Foo”,则不会**表示该类实现* Foo接口。 – Ingo

2

您可以获取类Class.getAnnotations()的注释并搜索您的Invokable注释。然后你可以得到你想调用的方法,并调用它。

2

这个决定将取决于你将如何使用这些类。如果你有很多类有一些可以使用的,有些则不可以,你可能最好使用注释,只需传递对象/类并检查注释。如果您知道您将要传递的类将全部为可Invokable,那么您可以使用标记界面。

即假设你只希望保留的行为,而不是:-)