2011-08-15 51 views
0

什麼類型定義了一個參數來確保它是確定的類並實現確定的接口?我正在使用< T擴展MyBaseClass & MyInterface >用於方法定義中的參數類型,但是我的參數不擴展MyBaseClass,IS是MyBaseClass類型。 我想確保我收回的參數是MyBaseClass類型並實現MyInterface什麼樣的類型定義了一個確定類的實參,並實現了確定的接口?

+3

嗯...什麼? :| – amit

+0

我會建議不要試圖確定你有什麼。擁有一個接口或抽象基類的一個很大的好處是你不需要知道你擁有什麼類的細節。你只要知道你可以調用接口中指定的方法,它就可以爲你工作,因爲你相信他們完成了接口指定的合約。如果您需要確切知道哪些課程已通過,您可能會在設計上做錯了什麼。 – corsiKa

回答

1

您不能。你要麼需要參數具有某種具體類型(這意味着它的子類也是允許的),或者實現某個特定的接口。

使用泛型可以強制參數化一個或多個類型的參數,例如不允許使用子類型,但據我所知,它與您的問題無關。

但是,您可以在體內使用instanceof以及與arg.getClass()進行比較。

-1

我會假設你是問,如果你可以做這樣的事情 -

public <T extends YourBaseClass, YourInterface> void foo(T bar) { 

答案是肯定的,你可以。如果嘗試將一個參數傳遞給YourBaseClass,但不實現YourInterface,則代碼將不會編譯。

+0

謝謝老兄,完美作品 –

+0

@Carlos Correa - 不客氣。 – Kal

相關問題