關於java中物件和泛型的乙個小問題?

時間 2021-05-12 09:24:40

1樓:

第二個問題,第一種情況是因為String是Object的子類,所以可以。第二種,你new出來的list1是Object集合,說明裡面可以放任何型別,要是能等於String集合,不就只能放String 了麼,所以報錯了。

第乙個不了解,應該是乙個吧。

下班路上手機打字應該不嚴謹,一會更新

2樓:

1、就new Object()乙個

2、陣列和List的區別:

陣列是協變的,也就是陣列型別Sub同樣是陣列Base的子型別。而泛型則是不可變的,比如兩個不同的List都是原生型別的子型別,但兩者並無其他繼承關係。

陣列是具體化的,執行時才知道並檢查它們的元素型別約束;而泛型則是通過擦除來實現的,編譯期就能檢查型別資訊。

3樓:xilan

泛型那個,簡單來說就是List不是List的子類。並不是所有可以用List的地方都能用List:

List

>stringList

=new

ArrayList

>();

//假設下面這行能通過編譯

List

>objectList

=stringList

;objectList

.add

(new

Foobar

());

Strings=

stingList

.get(0

);//

然後實際上得到的是乙個Foobar型別的物件

4樓:油潑棍棍面

你可以說乙個父親跟他的的孩子有血緣關係,那麼你就你可以說全中國的父親和全中國的孩子都有血緣關係嗎(假設所有存在的中中國人都是一對一的父子關係)。

5樓:別凡溪

1.乙個物件new Object(),引用不是物件。

2.因為泛型不是多型

Object o= null;

String s= new String[10];

o = s;

這樣賦值是可以的,但是執行

o[0] = new Object();

是會拋ArrayStoreException的,所以陣列只是在執行時進行的檢查

而集合類在編譯時就進行的檢測。

6樓:

第二個有可能會造成執行時錯誤,所以預設是禁止的。

比方說List

>intList

=new

ArrayList

<>();

List

>objList

=intList

;// 假設合法

intList

.add

("This is a String"

);// 不合法,String不是IntegerobjList

.add

("This is a String"

);// 合法,String是ObjectInteger

myInt

=intList

.get(0

);//

oops

,cast錯誤

乙個關於java異常處理的問題?

光頭兩把刀 額。你寫了個a方法,然後你不確定會出什麼異常,這個時候你不想自己處理這個異常,你要告訴呼叫者,我可能會出異常,你看著辦吧,然後你把異常在丟擲a throw exection.你看看sleep是不是這個道理? 大白 不放到try裡面可以直接丟擲,放到try catch裡面的主要目的是捕獲執...

在php中,new乙個物件和clone乙個物件,他們之間有什麼不同

eechen class foo foo new foo 我的理解 a foo 識別符號賦值 把 a賦值為null,原來的 foo並不會變成null,但通過 a能夠修改 foo的成員 bar a foo 引用賦值 把 a賦值為null,原來的 foo也會跟著變成null a clone foo 值賦...

java和c中每乙個case都要寫break是不是設計缺陷?

C這些明顯就是 為了讓人類寫彙編 的特性其實沒啥,值得吐槽的是方程一樣的型別宣告 而且 C 偏偏是乙個沒啥抽象的語言,需要抽象的地方只好函式指標和void 滿天飛,這就讓型別宣告的問題更加明顯了 SuperFashi 我覺得也是設計缺陷,至少不現代。而且C C 的switch還只能搞int型別,感覺...