2011-12-01 81 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,那麼您可以使用標記界面。

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