让我们有以下类层次结构:
public class ParentClass implements SomeInterface { } public class ChildClass extends ParentClass { }
然后让我们有这两个实例:
ParentClass parent; ChildClass child;
然后我们有以下TRUE语句
(parent instanceof SomeInterface) == true (child instanceof SomeInterface) == true
是否有可能在ChildClass中实现SomeInterface,所以当我们检查instanceof运算符时它返回false?
如果不可能,是否有解决方法?
不,这是不可能的,你这样做的意图是一个很好的暗示,你的班级层次结构中存在某些缺陷.
解决方法:更改类层次结构,例如.像这样:
interface SomeInterface {} abstract class AbstractParentClass {} class ParentClass extends AbstractParentClass implements SomeInterface {} class ChildClass extends AbstractParentClass {}
也许组合而不是继承是你想要的,即有一个"基类"对象作为成员,只需实现你需要的接口,转发成员所需的任何方法.