Java 的 instanceof 及其应用
java programming java 8object oriented programming
instanceof 运算符用于检查传递对象的类型。以下规则解释了 Java 中 instanceof 运算符的用法。
如果根据对象的类类型进行检查,instanceof 运算符将返回 true。
如果根据对象的类型进行检查,但该类型不在其层次结构中,则 instanceof 运算符将返回 false。
如果根据父对象类型进行检查,instanceof 运算符将返回 true。
如果根据整个对象层次结构(直至 Object 类)进行检查,instanceof 运算符将返回 true。
如果根据空值进行检查,instanceof 运算符将返回 false。
如果根据子对象类型进行检查,instanceof 运算符将返回 false。
以下示例展示了上述概念。
示例
class SuperClass { int value = 10; } class SubClass extends SuperClass { int value = 12; } public class Tester{ public static void main(String[] args){ SuperClass obj = new SubClass(); //instanceof 返回 true 以表示完整的对象层次结构 if(obj instanceof SubClass){ System.out.println("obj is instanceof SubClass"); } if(obj instanceof SuperClass){ System.out.println("obj is instanceof SuperClass"); } if(obj instanceof Object){ System.out.println("obj is instanceof Object"); } SuperClass obj1 = null; //instanceof 为 null 时返回 false if(obj1 instanceof SuperClass){ System.out.println("null is instanceof SuperClass"); } SuperClass obj2 = new SuperClass(); //instanceof 对子类返回 false if(obj2 instanceof SubClass){ System.out.println("obj2 is instanceof SubClass"); } if(obj2 instanceof SuperClass){ System.out.println("obj2 is instanceof SuperClass"); } } }
输出
obj is instanceof SubClass obj is instanceof SuperClass obj is instanceof Object obj2 is instanceof SuperClass