java使用枚举消除 if/else

发布时间 2023-07-04 13:34:35作者: 五官一体即忢

有这样一个判断场景。

if ("dog".equals(animalType)){
    System.out.println("吃骨头");
} else if ("cat".equals(animalType)) {
    System.out.println("吃鱼干");
} else if ("sheep") {
    System.out.println("吃草");
}

先定义一个接口,里面有一个通用方法 eat()

public interface Eat {
    //
    String eat();
}

然后创建枚举类实现这个接口

public enum AnimalEnum implements Eat {
    Dog(){
        @Override
        public void eat() {
            System.out.println("吃骨头");
        }
    },

    Cat() {
        @Override
        public void eat() {
            System.out.println("吃鱼干");
        }
    },

    Sheep() {
        @Override
        public void eat() {
            System.out.println("吃草");
        }
    }
}

调用的时候只需要一行代码:

public class Test {
    public static void main(String[] args) {
        AnimalEnum.valueOf("Cat").eat();
    }
}

以后假如想再扩充新的动物,只需要去枚举类中加代码即可,而不用改任何老代码,符合开闭原则