当在Java字节码汇编指令级别下钻到运算符instanceof
时,它对应于Java汇编指令instanceof
。不过,我看到用于Java组装指令instanceof的规则是什么意思?
规则确定objectref非空是否是解决类型的实例:
第二条规则说:
如果S是一个接口类型,则:
- 如果T是类类型,那么T必须是Object。
- 如果T是一个接口类型,则T必须是相同的接口S或S.
的超接口
这使我感到困惑。 “S是接口类型”是指S的引用类型是接口类型吗?如果是这样,第一条规则“如果T是一个类的类型,那么T必须是一个对象”不能成立。例如,
CharSequence charSequence = new StringBuilder("test");
System.out.println(charSequence instanceof StringBuilder);
System.out.println(charSequence instanceof String);
上面的代码中的第二行将打印为true,而上面的第三行将打印为false。所以我怀疑我的理解可能是错误的,任何人都可以帮助解释上述规则的含义?
'S是由* objectref *'引用的对象的类:在这种情况下,'StringBuilder'。第三行打印“false”是正确的。 – EJP
@EJP但是你不觉得我提到的第一条规则与我给出的代码打印的规则不同吗?字符串是对象,是不是 – Rui