如何从方法设置枚举属性的值?

Cat*_*ysm 0 java enums

我有一个枚举,它包含一个属性(age在我的情况下).我想从每个元素的方法设置它的值.以下是我的代码..

enum Gender {
    MALE {
    void setAge() {
        this.age = 20;
    }
    },
    FEMALE {
    void setAge() {
        this.age = 30;
    }
    };
    int age;

    public int getAge() {
    return age;
    }

    abstract void setAge();
}

public class TestingEnum {
    public static void main(String[] args) {
    System.out.println(Gender.MALE.getAge());
    System.out.println(Gender.FEMALE.getAge());

    }
}
Run Code Online (Sandbox Code Playgroud)

但为什么在我的主方法中产生它们的值只显示0

Jör*_*ink 5

你永远不会打电话给setAge.您可以使用构造函数:

enum Gender {
    MALE (28),
    FEMALE (28);

    int age;

    Gender(int genderAge) {
        this.age = genderAge;
    }

    public int getAge() {
        return age;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • +1这个!当它只是设置一些值时,不需要每个枚举必须实现的抽象方法. (3认同)