java中的object類和泛型


object類和泛型都有助於提高程序的復用性,那么它們的區別是什么呢?又為什么泛型被廣泛使用,而object被打入“冷宮”呢?

其實在jdk1.5版本發布之前,object還是被廣泛使用的

那么讓我們先看看jdk api中對object類的定義:

 

好吧,定義上並不能看出它的缺點,不過我們得了一個信息:object類的出現遠早於泛型

好像也沒什么用那我們上代碼吧:

public class Dog {
    private Object age = 10;
    
    public Object getAge() {
        return age;
        
    }
}

 

public class AnotherDog<L> {

    private L age = (L) new Integer(10);
    
    public L getAge() {
        return age;
    }
}

 

 

 我定義了兩條Dog,都只含有一個rep即年齡,現在我測試這兩條狗,使它們都增長一歲

public class testDog {

    private Dog d = new Dog();
    private AnotherDog<Integer> d1 = new AnotherDog<>();
    
    public int addAge() {
        int a = (int) d.getAge();
        return a+1;
    }

    public int addAnotherAge() {
        return d1.getAge()+1;
        
    }
}

主函數打印狗增加年齡后的歲數

public static void main(String[] args) {
        testDog dog = new testDog();
        System.out.println(dog.addAge());
        System.out.println(dog.addAnotherAge());
    }

結果都是11,這沒什么問題。但我們注意到,用object定義狗的歲數時

 public int addAge() {
        int a = (int) d.getAge();
        return a+1;
    }

執行增加歲數操作就要進行強制類型轉換

而如果不進行強制類型轉換

 

 連靜態類型檢查都過不了

總結一下,上文已說過早期的時候,我們使用Object來代表任意類型。使用object必然會帶來轉型的問題,向上轉型是沒有任何問題的,但是在向下轉型的時候其實隱含了類型轉換的問題。也就是說這樣的程序並不是安全的。所以Java在JDK5后引入了泛型,提高程序的安全性。


 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM