想象一下我有这个:
public class Animal {
private String racaAnimal;
private String corAnimal;
public String getCorAnimal() {
return this.corAnimal;
}
public String getRacaAnimal() {
return this.racaAnimal;
}
public Animal getAnimaisCliente(int indice) {
return this.animaisCliente[indice];
}
}
public class Estimacao extends Animal{
private String nomeAnimal;
public String getNomeAnimal() {
return nomeAnimal;
}
}
public class Cliente{
private Animal[] animaisCliente;
}
构造函数没有显示,但它们工作正常。
我有一个包含所有客户端的数组列表
ArrayList<Cliente> clientes = new ArrayList<Cliente>();
动物是这样被创造出来的
Estimacao animaisEstimacao = new Estimacao(nomeAnimal,racaAnimal,corAnimal);
然后将其添加到Cliente中的Animal数组中
现在如果我这样做:
System.out.println(" Raça: " + clientes.get(0).getAnimaisCliente(0).getRacaAnimal());
它有效。 但是我如何从 Estimacao 类中获取 nomeAnimal 呢?
如果我放
System.out.println(" Nome: " + clientes.get(0).getAnimaisCliente(0).getNomeAnimal());
它不起作用。
从子类中我们可以从父类(super class)中获取东西,但反之亦然?这可能吗?
最佳答案
您需要将您的Animal
转换为Estimacao
。但显然,如果您不想冒异常风险,请先确保您的 Animal
属于正确的类别:
Animal animal = clientes.get(0).getAnimaisCliente(0);
if (animal instanceof Estimacao) {
System.out.println(" Nome: " + ((Estimacao) animal).getNomeAnimal());
}
关于Java从子类中获取String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8433751/