无法强制转换为已实现的接口
我很困惑...
我有一个直接实现接口的类:
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
另外,返回 false,我不确定为什么:isAssignableFrom
log.debug(AutocompleteResult.class.isAssignableFrom(Device.class));
从文档:
确定此 Class 对象所表示的类或接口是否与指定的 Class 参数所表示的类或接口相同,或者是否是其超类或超接口。
难道我不应该总是能够将对象强制转换为其类实现的接口吗?
谢谢。