我很困惑...無法投射到實現的接口
我有直接實現接口的類:
public class Device implements AutocompleteResult
{...}
這是證明我期待在合適的變量:
Object match = ...;
log.debug(match.getClass()); // Outputs 'Device'
log.debug(match.getClass().getInterfaces()[0]); // Outputs 'AutocompleteResult'
然而,當我試着投一個類的實例接口:
AutocompleteResult result = (AutocompleteResult) match;
我得到一個ClassCastException!
ClassCastException: Device cannot be cast to AutocompleteResult
此外,isAssignableFrom
返回false,我不知道爲什麼:
從doc:
判定此類類或接口代表對象是或者是相同的,或者是超類或者是superinterf ace,由指定的Class參數表示的類或接口。
我不應該總是能夠投出對象的接口的類實現的?
謝謝。
是的,你應該! (你甚至不需要明確的轉換。)請張貼一些自包含的示例代碼來演示問題。 –