【发布时间】:2017-03-06 10:17:25
【问题描述】:
我的问题是,既然new Test() 既不是String 的子类,也不是String 本身,那么为什么instanceof 编译失败?它不应该返回 false。
public class Test{
public static void main(String[] args) {
//Compiles fails
System.out.println(new Test() instanceof String);
//compiles fine but run time class cast exception.
Test = (Test) new Object();;
}
}
现在我已经编辑了我的帖子,所以这就是我真正想知道为什么会有这种差异的原因。为什么编译不会在强制转换时失败
【问题讨论】:
-
编译器的信息是什么?
-
编译器说-不兼容的条件操作数类型 TypeCasting 和 String
-
Object t=new Test(); if(t instanceof String ){ }如果您说 new Test() instanceof String,那么您已经知道它不是字符串。 instanceof 工作,如果你不确定,对象是哪种类型 -
但这就是运算符实例出现的原因,我知道但逻辑上它应该显示 false 作为结果而不是编译失败。
-
它不重复请再次检查他们说为什么没有编译错误,我在这里寻求解释为什么有错误虽然它应该是错误的
标签: java instanceof