I'm trapped right now and don't know an easier solution to this, maybe you can help me out.
I have an Interface called Animal and lots of Animal Classes implementing it. EDIT: The interface must be wrong then:
public interface Animals {
Integer lifespan = 0;
public Integer getLifespan();
}
In a function I get some random animal Object back and I want to get variables of it.
if (animal instanceof GuineaPig) {
lifespan = ((GuineaPig) animal).getLifespan();
age = ((GuineaPig) animal).getAge();
value = ((GuineaPig) animal).getValue();
}
if (animal instanceof Rabbit) {
lifespan = ((Rabbit) animal).getLifespan();
age = ((Rabbit) animal).getAge();
value = ((Rabbit) animal).getValue();
}
Now I need to have if clauses for every animal, there must be an easier way, right? What am I doing wrong?
EDIT2: Full Interface and Classes:
public interface Animals {
final Integer id = 0;
Integer prize = 999999;
Integer value = 0;
Integer age = 0;
Integer lifespan = 0;
String[] colors = {
"c_bw", "c_w", "c_brw"
};
String name = null;
String finalColor = null;
public String[] getColors();
public Integer getPrize();
public Integer getId();
public Integer getLifespan();
public Integer getAge();
public Integer getValue();
public String getName();
public String setName(String animalName);
public String setFinalColor(String finalColor);
}
class GuineaPig implements Animals {
private final Integer id = 0;
private Integer prize = 10;
private final Integer difficulty = 0; // easy
private final Integer licenceNeeded = 0;
private Integer value = 5;
private Integer age = 0;
private String[] colors = {
"c_bw", "c_w", "c_brw"
};
private String name = null;
private String finalColor = null;
@Override
public Integer getPrize() {
return prize;
}
public void setPrize(Integer prize) {
this.prize = prize;
}
public Integer getDifficulty() {
return difficulty;
}
public Integer getLicenceNeeded() {
return licenceNeeded;
}
@Override
public String[] getColors() {
return colors;
}
public Integer getId() {
return id;
}
@Override
public Integer getLifespan() {
return null;
}
public String getName() {
return name;
}
public String setName(String name) {
this.name = name;
return name;
}
public String getFinalColor() {
return finalColor;
}
public String setFinalColor(String finalColor) {
this.finalColor = finalColor;
return finalColor;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
class Rabbit implements Animals {
private final Integer id = 1;
private Integer prize = 15;
private Integer lifespan = 30;
private Integer difficulty = 0; // easy
private final Integer licenceNeeded = 1;
private Integer value = 7;
private Integer age = 0;
private String[] colors = {
"c_b", "c_w", "c_br"
};
private String name = null;
private String finalColor = null;
@Override
public Integer getPrize() {
return prize;
}
public void setPrize(Integer prize) {
this.prize = prize;
}
public Integer getDifficulty() {
return difficulty;
}
public Integer getLicenceNeeded() {
return licenceNeeded;
}
@Override
public String[] getColors() {
return colors;
}
public Integer getId() {
return id;
}
@Override
public Integer getLifespan() {
return null;
}
public String getName() {
return name;
}
public String setName(String name) {
this.name = name;
return name;
}
public String getFinalColor() {
return finalColor;
}
public String setFinalColor(String finalColor) {
this.finalColor = finalColor;
return finalColor;
}
public Integer getValue() {
return value;
}
public void setValue(Integer value) {
this.value = value;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}