JAVA中泛型 和Object的區別


問題:下面2個方法的聲明有何不同

public Object doSomething(Object obj) {....}

public <T> T doSomething(T t) {....}

答案:

單從上文2個方法聲明來說-沒有區別。無論是T還是 obj,你都只能調用Object類型的參數和返回值。

但是基於上面2個方法,如果你有一個使用了泛型的類:

MyClass<Foo> my = new MyClass<Foo>();
Foo foo = new Foo();

就可以這么寫:

Foo newFoo = my.doSomething(foo);

但是如果是使用object的話,就得這么寫

Foo newFoo = (Foo) my.doSomething(foo);

由此可見,使用泛型,有2個好處:

1.不需要做強制類型轉換

2.編譯時更安全。如果使用Object類的話,你沒法保證返回的類型一定是Foo,也許是其它類型。這時你就會在運行時得到一個類型轉換異常(ClassCastException)

 


免責聲明!

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



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