gpt4 book ai didi

java - Java中如何通过抽象类访问子类?

转载 作者:行者123 更新时间:2023-12-02 06:12:51 26 4
gpt4 key购买 nike

我有以下 Java 代码:

class Info {
@XmlAnyElement
@XmlElementRefs({@XmlElementRef(name="apple", type="Apple.class")})
final private List<Fruit> fruits = new ArrayList<Fruit>();

public Info() {
}

public List<Fruit> getFruits() {
return fruits;
}
}

public abstract class Fruit {
@XmlElement(name = "label", required = true)
@XmlJavaTypeAdapter(NormalizedStringAdapter.class)
String name = null;

public Fruit() {
}
}

@XmlRootElement(name="apple")
public class Apple extends Fruit {
@XmlElement(name = "age", required = true)
int age;

public int getAge() {
return age;
}
}

<config>
<Info>
<apple>
<age>20</age>
</apple>
</Info>
</config>

那么在主类中,如何访问类Apple来获取苹果的年龄?

class Main() {
private List<Fruit> fruits = new ArrayList<Fruit>();

public void getAge() {
Info info = new Info();
fruits = info.getFruits();
}
}

在主类中,我们得到了一个水果列表,但是如何访问Apple类的getAge()方法呢?

最佳答案

首先,请注意,您无法确定您的 Fruit对象是 Apple 的实例,你的 fruits对象不是一个单一的Fruit但是一个List<Fruit> .

也就是说,假设您想要 getAge返回第一个的年龄Apple在列表中,您可以执行以下操作:

public void getAge() {
int age = -1;
for(Fruit f : fruits) {
if(f instanceof Apple) {
age = ((Apple)f).getAge();
}
}
}

关于java - Java中如何通过抽象类访问子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21732272/

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