想象一下,我有这个:
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;
}
Run Code Online (Sandbox Code Playgroud)
构造者没有展示,但他们工作正常.
我有一个支持所有Cliente的arraylist
ArrayList<Cliente> clientes = new ArrayList<Cliente>();
Run Code Online (Sandbox Code Playgroud)
并且像这样创造动物
Estimacao animaisEstimacao = new Estimacao(nomeAnimal,racaAnimal,corAnimal);
Run Code Online (Sandbox Code Playgroud)
然后它添加到Cliente中的Animal数组中
现在,如果我这样做:
System.out.println(" Raça: " + clientes.get(0).getAnimaisCliente(0).getRacaAnimal());
Run Code Online (Sandbox Code Playgroud)
有用.但是我如何从Estimacao类中获得nomeAnimal?
如果我放
System.out.println(" Nome: " + clientes.get(0).getAnimaisCliente(0).getNomeAnimal());
Run Code Online (Sandbox Code Playgroud)
它不起作用.
从一个子类我们可以从超类中获取东西,但另一方面是arroud?可能吗?
你需要投你Animal
的Estimacao
.但显然,如果您不想冒异常风险,请确保您之前Animal
是正确的类:
Animal animal = clientes.get(0).getAnimaisCliente(0);
if (animal instanceof Estimacao) {
System.out.println(" Nome: " + ((Estimacao) animal).getNomeAnimal());
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
368 次 |
最近记录: |