我有两个枚举类:
public enum dog{
Sound("barks"),
Eat("meat"),
Drink("water");
private String attribute;
private dog (String attribute){
this.attribute = attribute; }
public String returnAttribute(){
return attribute;}
}
和
public enum cat{
Sound("meows"),
Eat("fish"),
Drink("milk");
private String attribute;
private cat (String attribute){
this.attribute = attribute; }
public String returnAttribute(){
return attribute;}
}
我想在运行时动态地在两个枚举之间切换,就好像它是一个对象(我知道它不是)。所以我会根据“条件”为狗或猫分配一个枚举“持有人”,然后获取属性值,即 enumholder.Sound.returnAttribute;
如果是狗,它将返回“吠声”,如果是猫,它将返回“喵喵声”。是否可以?
最佳答案
简短的回答是否定的。看,Java enum inheritance
不使用枚举,而是使用类和继承。要完成您要查找的内容,您需要三个类:Animal
、Cat
和 Dog
。
class Animal {
public String getSound() {
return "Animal sound";
}
// Other mehtods...
}
class Cat extends Animal {
@Override
public String getSound() {
return "Meow";
}
// Other mehtods...
}
class Dog extends Animal {
@Override
public String getSound() {
return "Bark";
}
// Other mehtods...
}
您可以使用这些类来获得您想要的功能。
public class Main {
public static void main(String[] args) {
Animal a = new Cat();
System.out.println(a.getSound());
a = new Dog();
System.out.println(a.getSound());
}
}
关于java - 在 Java 运行时在两个枚举类之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38625291/