instanceof判斷物件型別
阿新 • • 發佈:2019-02-13
package bean; /** 一般可能我們在使用java的RTTI技術時,都使用instanceof來判斷一個物件是不是屬於某個類, * 但是有時候這個類是繼承於一個父類的,所以,不能嚴格判斷出是不是自己的類,而不是自己的父類。 * 這個時候就使用另一種思路也是不錯的——getClass判斷;當然肯定還有其他的方法來判斷的,只是自己的總結。 */ public class tets { public static void main(String arg[]) { ClassA a = new ClassA(); ClassB b = new ClassB(); ClassC c = new ClassC(); sayClass(a); sayClass(b); sayClass(c); System.out.println("---------------------------------"); equalClass(a); equalClass(b); equalClass(c); } public static void sayClass(Object o) { if (o instanceof ClassA) { System.out.println("ClassA"); } else if (o instanceof ClassB) { System.out.println("ClassB"); } else if (o instanceof ClassC) { System.out.println("ClassC"); } } public static void equalClass(Object o) { // if(o.getClass().equals(ClassA.class)){ // System.out.println(o.getClass().getName()); // }else if(o.getClass().equals(ClassB.class)){ // System.out.println(o.getClass().getName()); // }else if(o.getClass().equals(ClassC.class)){ // System.out.println(o.getClass().getName()); // } // if (o.getClass() == ClassA.class) { System.out.println(o.getClass().getName()); } else if (o.getClass() == ClassB.class) { System.out.println(o.getClass().getName()); } else if (o.getClass() == ClassC.class) { System.out.println(o.getClass().getName()); } } } class ClassA { ClassA() { }; } class ClassB { ClassB() { }; } class ClassC extends ClassA { ClassC() { }; }