java - 在 Java 运行时在两个枚举类之间切换

标签 java enums

我有两个枚举类:

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

不使用枚举,而是使用类和继承。要完成您要查找的内容,您需要三个类:AnimalCatDog

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/

相关文章:

java - JobRunr 与 Spring Boot - ConverterNotFound 异常

java - 谷歌应用引擎上的 OSGI?

java - 枚举到字符串的转换

java - Enum 占用多少内存?

Java Enum 静态方法线程安全?

c# - 如何在 Entity Framework 核心 rc2 中实现类型安全枚举模式

java - Javadoc 的好例子

java - 私有(private)字段并重写 getter 和 setter 方法

sql - 统计 PostgreSQL 中枚举的所有值

java - 运行 Z3 java 绑定(bind)时出错