JAVA的instanceof问题
看代码
public class StaticTest5 {
public static void main(String args[])
{
B b1[]=new B[1];
if(b1 instanceof B)
{
System.out.print("true");
}
}
}
class A{}
class B extends A{}
===============================================================
问题:为什么if(b1 instanceof B)这行不成立?
首先你的文件编译就应该编译不过, 因为Java编译器会识别对象和链纳数组, 所以当数组instanceof 对象的时候, 会报编译错误.
还有b1[0] instanceof B 也棚茄没是错的, 因为即使你的b1声明成B的数组, 但是数组中并没有B的实例, b1[0]应该是null, 所以一样打印不出来true.
b1[1] instanceof B 就更不行了, b1的声明长度是1, 所以下纳或标只包含0, 写成这样的话都不会走判断, 直接就抛出了数组越界的异常.
b1是数组类型的,当然不是B类型的了
b1 instanceof B[] 就可以了
b1是数组,instanceof的作用是测试辩谈坦它左边的对侍敏象是否是它右边的类的实例。
如果携桐if中写:(b1[1] instanceof B)就行。
b1是数组,B不是数组类,类型不匹配。b1[0] instanceof B 这样就可以了啊,
b1是数组啊,当然不成立