亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我需要對對象數組中的特定引用進行強制轉換?

為什么我需要對對象數組中的特定引用進行強制轉換?

海綿寶寶撒 2022-09-21 17:37:29
要引用數組中的特定對象,我需要將int轉換為其類型,否則編譯器不接受,為什么我需要此轉換?示例:Person[] people = Person[5];            //Generic Array of specific objectsEmployee employee1 = new Employee();    //Employee class extends PersonManager manager1 = new Manager();       //Manager class extends Personpeople[0] = employee1;people[1] = manager1;Person ref = people[0];                //OK! it can compileEmployee ref2 = people[1];               //Do not compileEmployee ref2 = (Employee) people[1];      //OK! it can compile為什么需要演員陣容?
查看完整描述

5 回答

?
小唯快跑啊

TA貢獻1863條經驗 獲得超2個贊

在 Java 中有一個 和 的概念。上嵌意味著轉換為超類型,而下嵌意味著轉換為子類型。upcastingdowncasting

每當有關系時,你都可以毫無傷害地進行升級。但需要注意的是低調。Is-A

例如,您有 和 因為 兩者 都是 類,因此 People 數組可以存儲這兩個?,F在,當你做編譯器不知道它實際上是員工,因為有相等的概率,可以經理作為經理類也擴展了人。因此,您需要顯式提供一個強制轉換,告訴編譯器您知道自己在做什么,并且無需給出任何編譯錯誤。但是,如果在運行時出現任何問題,則將拋出a。People arrayEmployeeManagerextendsPeopleEmployee ref2 = people[1];ClassCastException


查看完整回答
反對 回復 2022-09-21
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

它不是在沒有強制轉換的情況下編譯的,因為編譯器不知道它是 .people[1]Employee

來自 Java 教程。鑄造對象

我們可以告訴編譯器,我們承諾通過顯式轉換來分配給它。Employeepeople[1]

此強制轉換將插入一個分配了 的運行時檢查,以便編譯器可以安全地假定 該檢查是 。如果不是 在運行時,將引發異常。people[1]Employeepeople[1]Employeepeople[1]Employee

查看更多 Java 中的強制轉換變量


查看完整回答
反對 回復 2022-09-21
?
倚天杖

TA貢獻1828條經驗 獲得超3個贊

變量的類型為 。 ( - 實例也可以是擴展的子項 )。peoplePersonPerson[] people = Person[5];type[] people = new instancetype

這里編譯器看到,你需要說在編譯器它也可以(導致擴展)通過轉換。Employee ref2 = people[1];peoplePersonEmployeeEmployeePerson

你可以閱讀更多,關于這個主題,在這里: https://www.baeldung.com/java-type-casting


查看完整回答
反對 回復 2022-09-21
?
嗶嗶one

TA貢獻1854條經驗 獲得超8個贊

變量的類型為 。 ( - 實例也可以是擴展的子項 )。peoplePersonPerson[] people = Person[5];type[] people = new instancetype

這里編譯器看到,你需要說在編譯器它也可以(導致擴展)通過轉換。Employee ref2 = people[1];peoplePersonEmployeeEmployeePerson

你可以閱讀更多,關于這個主題,在這里: https://www.baeldung.com/java-type-casting


查看完整回答
反對 回復 2022-09-21
?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

因為您有一個員工引用,并且您嘗試使用類型為 Person 的值對其進行實例化。

員工一個人,但一個人不一定是員工。如果我錯了,請糾正我。


查看完整回答
反對 回復 2022-09-21
  • 5 回答
  • 0 關注
  • 153 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號