第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么 java 編譯器在獲取列表參數(shù)之前不檢查對(duì)象類型?

為什么 java 編譯器在獲取列表參數(shù)之前不檢查對(duì)象類型?

慕勒3428872 2023-07-28 16:05:14
Java 編譯器似乎并不關(guān)心列表中的類型是否匹配,直到需要獲取對(duì)象為止:private static void print(List<Integer> list) { //private static <T> void print(List<T> list) { will also do    for (Object object: list)        System.out.print(object);    int int0 = list.get(0); //ok    //int int1 = list.get(1); //ClassCastException if run}public static void main(String[] args) {    List list = new ArrayList();    list.add(1);    list.add("2");    print(list);}
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

Java 編譯器沒(méi)有檢查您添加到列表中的元素的類型,因?yàn)槟暶髁嗽碱愋停?/p>

List?list?=?new?ArrayList();

然后在執(zhí)行期間您嘗試分配Stringint,這ClassCastException在運(yùn)行時(shí)引起。

您在這一行沒(méi)有遇到異常int int0 = list.get(0);,因?yàn)樽詣?dòng)裝箱(在本例中為拆箱)。

正是這類問(wèn)題導(dǎo)致了Java 語(yǔ)言中引入泛型。因此,為了讓編譯器檢查放入列表的類型,您需要將聲明更改為:

List<Integer>?list?=?new?ArrayList<>();

這將告訴編譯器檢查添加到列表中的值的類型并強(qiáng)制它們?yōu)?code>Integers。因此,基本上運(yùn)行時(shí)錯(cuò)誤將被消除并被編譯時(shí)錯(cuò)誤取代。



查看完整回答
反對(duì) 回復(fù) 2023-07-28
?
收到一只叮咚

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊

像這樣的類型化定義List<Integer>正是為了防止此類錯(cuò)誤。但是您沒(méi)有使用List list任何類型,因此您拒絕在運(yùn)行程序之前獲取有關(guān)編譯期間錯(cuò)誤的信息。

聲明具有特定類型的列表

List<Integher> list = new ArrayList<>();

...Java編譯器會(huì)告訴你你的錯(cuò)誤。您將看到以下行被標(biāo)記為錯(cuò)誤:

list.add("2");


查看完整回答
反對(duì) 回復(fù) 2023-07-28
  • 2 回答
  • 0 關(guān)注
  • 174 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)