gpt4 book ai didi

java - 为什么我需要对对象数组中的特定引用进行强制转换?

转载 作者:行者123 更新时间:2023-12-01 17:45:46 25 4
gpt4 key购买 nike

要引用数组中的特定对象,我需要将 int 转换为其类型,否则编译器不接受,为什么我需要此转换?

示例:

Person[] people = Person[5];            //Generic Array of specific objects

Employee employee1 = new Employee(); //Employee class extends Person
Manager manager1 = new Manager(); //Manager class extends Person

people[0] = employee1;
people[1] = manager1;


Person ref = people[0]; //OK! it can compile
Employee ref2 = people[1]; //Do not compile
Employee ref2 = (Employee) people[1]; //OK! it can compile

为什么需要 Actor 阵容?

最佳答案

在Java中有一个向上转型向下转型的概念。向上转型意味着转型为父类(super class)型,而向下转型则意味着转型为子类型。

只要存在 Is-A 关系,您就可以进行向上转型,不会造成任何损害。但它是令人沮丧的,需要照顾。

例如,您有 People 数组,并且由于 EmployeeManagerextends People 所以 People 数组可以存储这两者。现在,当您执行 Employee ref2 = people[1]; 时,编译器不知道它实际上是 Employee ,因为有相同的概率可以是 Manager ,因为 Manager 类也扩展了 People 。因此,您需要显式提供一个强制转换,告诉编译器您知道自己在做什么,并且不需要给出任何编译错误。但如果运行时出现任何问题,则会抛出 ClassCastException

关于java - 为什么我需要对对象数组中的特定引用进行强制转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55499980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com