有兩個方法可以得到物件的型別
- instanceof,除了可以得到物件的型別,也可以得到物件的繼承關係。
 - getClass搭配equals,只能判斷物件與類別的直接關係,不能判斷物件的繼承關係。
 
可以參考下方例子會更清楚。

Cat類別繼承Animal類別,而Airplane實作Flyer介面
public class Test {
    public static void main(String[] args) {
        Cat cat = new Cat();
        Airplane airplane = new Airplane();
        
        // instanceof
        if (cat instanceof Animal) {
            System.out.println("cat is Animal class");
        }
        if (cat instanceof Cat) {
            System.out.println("cat is Cat class");
        }
        
        System.out.println("========================");
        
        
        // getClass
        if (cat.getClass().equals(Animal.class)) {
            System.out.println("cat is Animal class");
        }
        if (cat.getClass().equals(Cat.class)) {
            System.out.println("cat is Cat class");
        }
        
        System.out.println("========================");
        
        
        if (cat.getClass().equals(Airplane.class)) {
            System.out.println("cat is Dog class");
        } else {
            System.out.println("cat is not Dog class");
        }
        
        System.out.println("========================");
        
        
        if (airplane instanceof Airplane) {
            System.out.println("airplane is Airplane class");
        }      
        if (airplane instanceof Flyer) {
            System.out.println("airplane is Flyer class");
        }
        
        System.out.println("========================");
        
        
        if (airplane.getClass().equals(Airplane.class)) {
            System.out.println("airplane is Airplane class");
        }
        
        if (airplane.getClass().equals(Flyer.class)) {
            System.out.println("airplane is Flyer class");
        }
    }
}
輸出
cat is Animal class
cat is Cat class
========================
cat is Cat class
========================
cat is not Dog class
========================
airplane is Airplane class
airplane is Flyer class
========================
airplane is Airplane class
使用instanceof,除了可以得知cat物件屬於Cat類別,也可判斷出cat物件與Animal類別有某種繼承關係。
使用instanceof,也可知道物件與實作類別的關係,像是例子中能知道airplane與Flyer類別有某種繼承或實作關係
使用getClass搭配equals,只能判斷cat物件屬於Cat類別,不能判斷出cat物件與Animal類別有關係
下方為使用instanceof練習寫判斷物件型別的方法
private static void judgeClassByInstanceOf(Object o) {
    if (o instanceof String) {
        System.out.println(o + " is String type");
    } else if (o instanceof Float) {
        System.out.println(o + " is Float type");
    } else if (o instanceof Double) {
        System.out.println(o + " is Double type");
    } else if (o instanceof Integer) {
        System.out.println(o + " is Integer type");
    } else if (o instanceof Boolean) {
        System.out.println(o + " is Boolean type");
    }
}