我想下面的代码将编印“否”为什么会出现在此的instanceof测试编译错误
class One{
public static void main(String[] args) {
One o = new One();
if(o instanceof Two) {
System.out.println("Yes");
} else {
System.out.println("No");
}
}
}
class Two { }
但它扔我一个编译器错误,指出inconvertible types
应该不是instanceof
运营商检查如果对象是在传承层次,如果是返回true
和false
如果没有
编辑:
如果编译器已经知道某个条件永远无法真正的情况下,它抛出一个编译器错误,这是为什么代码编译
if(false) {
System.out.println("Yes");
}
因为它可以从类名中得知答案是错误的。声明o是一个对象(但仍然创建一个)。 'Object o = new One();' –
@fvrgl:我没有看到那篇文章,我的不好。但你能看到我的编辑并提供解释吗? –
您没有违反if(false)情况下的任何规则。 –