gpt4 book ai didi

java - 将对象的类转换为子类

转载 作者:行者123 更新时间:2023-12-05 08:47:01 26 4
gpt4 key购买 nike

假设我有以下类(class)

public abstract class Parent {

public Parent() {

//stuff here

}

}

public class Child extends Parent {

public Child() {

//stuff here

}

public void doSomething() {

}

}

然后我从父数组中得到一个对象

public Parent[] parents = new Parent[5];

Parent tempParent = parents[0]

如果此对象属于子类,我想将 tempParent 转换为子类以便使用“doSomething”而无需创建新对象

if(tempParent.getClass == Child.class) {

tempParent = (Child) tempParent;

tempParent.doSomething();

}

然而,这是行不通的。我仍然收到一条错误消息,告诉我 doSomething 不是 Parent 类中的函数。有没有办法做我想做的事?

最佳答案

您需要在左侧使用正确的 TYPE:

Child someChild = (Child) tempParent;

注意:这不会创建新对象。

没有的方法

Parent whatever = (Child) tempParent;

做你想做的事(调用一个子类方法)!

你看,编译器关心你引用的“已定义”类型,它考虑到你很可能在运行时只是“把”一些东西放到那个引用中,实际上是一个 Child 实例!

做你想做的事。

注意:不要使用==比较对象。您应该更喜欢调用 equals()。对于 Class 对象,== 应该可以工作(大部分时间),但仍然:习惯于使用 equals() 检查相等性。

关于java - 将对象的类转换为子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68651631/

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