如何使用带有switch语句的枚举?

时间:2014-11-30 09:00:19

标签: java enums switch-statement managed-bean

在我的应用程序中,我有一个这样的枚举:

public enum EAnimals {

    dogs(1, "white", "big"),
    cats(2, "black", "small");

    private Integer animalId;
    private String color;
    private String size;

    EAnimals(Integer animalId, String color, String size) {
        this.animalId = animalId;
        this.color = color;
        this.size = size;
    }

    public Integer getAnimalId() {
        return animalId;
    }
    public String getColor() {
        return color;
    }
    public String getSize() {
        return size;
    }

我在这里尝试实现的是使用switch case从管理Bean获取动物ID (1,2,..)

public AnimalsId getDynamicAnimalId() {
    switch (animalId) {
    case EAnimals.dogs.getAnimalId():
        size ="small";
        return size;

    case EAnimals.cats.getAnimalId():
        size = "big";
        return size;
    default:
        return "Error";
    }
}

在switch语句中" 案例EAnimals.dogs.getAnimalId(): "不适合我,我不知道该怎么做。

编辑:更正了我在将代码从IDE重写为stackoverflow时所犯的一些错误。我的实际代码中没有这个错误。

1 个答案:

答案 0 :(得分:1)

首先,我在enum中看到了一些错误。你需要一个逗号(不是分号)。您有两个String字段,但您已声明它们会返回Integer

public enum EAnimals {
    dogs(1, "white", "big"), // <-- ,
    cats(2, "black", "small");
    private Integer animalId;
    private String color;
    private String size;

    EAnimals(Integer animalId, String color, String size) {
        this.animalId = animalId;
        this.color = color;
        this.size = size;
    }

    public Integer getAnimalId() {
        return animalId;
    }

    public String getColor() { // <-- String
        return color;
    }

    public String getSize() { // <-- using an enum in a switch.
        switch (this) {
        case dogs:
            return "small";
        case cats:
            return "big";
        default:
            return "Error";
        }
    }
}