让我们有以下类层次结构:
public class ParentClass implements SomeInterface {
}
public class ChildClass extends ParentClass {
}
Run Code Online (Sandbox Code Playgroud)
然后让我们有这两个实例:
ParentClass parent;
ChildClass child;
Run Code Online (Sandbox Code Playgroud)
然后我们有以下TRUE语句
(parent instanceof SomeInterface) == true
(child instanceof SomeInterface) == true
Run Code Online (Sandbox Code Playgroud)
是否有可能在ChildClass中实现SomeInterface,所以当我们检查instanceof运算符时它返回false?
如果不可能,是否有解决方法?
use*_*205 18
不,这是不可能的,你这样做的意图是一个很好的暗示,你的班级层次结构中存在某些缺陷.
解决方法:更改类层次结构,例如.像这样:
interface SomeInterface {}
abstract class AbstractParentClass {}
class ParentClass extends AbstractParentClass implements SomeInterface {}
class ChildClass extends AbstractParentClass {}
Run Code Online (Sandbox Code Playgroud)