我很困惑...无法投射到实现的接口
我有直接实现接口的类:
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参数表示的类或接口。
我不应该总是能够投出对象的接口的类实现的?
谢谢。
是的,你应该! (你甚至不需要明确的转换。)请张贴一些自包含的示例代码来演示问题。 –