這可能以前曾被問過,但是一個快速搜索只提出了同樣的問題,詢問C#。 See here.測試對象是否實現接口
我基本上想要做的是檢查給定的對象是否實現了給定的接口。
我有點想出了一個解決方案,但這只是不夠舒服,經常在if或case語句中使用它,我想知道Java是否沒有內置解決方案。
public static Boolean implementsInterface(Object object, Class interf){
for (Class c : object.getClass().getInterfaces()) {
if (c.equals(interf)) {
return true;
}
}
return false;
}
編輯:好,感謝您的回答。特別是對達米安Pollet和Noldorin,你讓我重新思考我的設計,所以我不再測試接口。
你就不能試着鑄造和捕捉異常,如果一個人被拋出前(或檢查如果Java有與C#「as」運算符類似的任何東西,那麼甚至是空結果?)我是C#編程人員而不是Java編程人員,所以我主要是在這裏猜測,儘管我會認爲這種方法在任何OO語言中都是可能的。 – Noldorin 2009-04-19 21:21:45
耶!歡迎您:) – 2009-04-20 23:55:44
只有在您不必關心性能的情況下,拋出異常纔是最佳實踐。 – Rafa 2014-01-22 08:57:20