java枚举用法获取和设置



我在这里试图在类对象中获取和设置枚举,但不确定如何做到这一点。这就是我目前所拥有的。我已经查遍了所有我能查到的,有些例子对我来说太复杂了,无法理解。请帮忙吗?

public class EnumExample {
public static class Task {
    private String _task;
    public enum Priority {
        ZERO (0), MAYBE (1), LOW (2), MEDIUM (3), HIGH (4), EXTREME (5);
        private int _priority;
        Priority() {
            _priority = 0;
            // Does this set set the default priority level to 0??
        }
        Priority(int priority) {
            _priority = priority;
            // This is where I can set the priority level of this task??
        }
        public int getPriority() {
            return _priority;
        }
        public void setPriority(int priority) {
            _priority = priority;
        }
    }
}

public static void main(String[] args) {
    Task task = new Task();
    task._task = "Study for test";
    System.out.println(task._task);
    System.out.println(task.getPriority());
    // How do I set the priority level for task "study for test"??
    // task.Priority = task.Priority.EXTREME;
    // How do I retrieve the value of priority??
    // System.out.println(task._task.getPriority());
}

}

您可以使用枚举的ordinal()方法来获取其位置。然后,您可以使用它来获得值优先级。

public class Task {
    private Priority priority = Priority.ZERO; // Default priority
    private String name = "";
    public enum Priority {
        ZERO, MAYBE, LOW, MEDIUM, HIGH, EXTREME;
    }
    public Task(String name) {
        this.name = name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getName() {
       return name;
    }
    public void setPriority(Priority p) {
        this.priority = p;
    }
    public Priority getPriority() {
        return priority
    }
    public static void main(String[] args) {
        Task t = new Task("Washing up");
        t.setPriority(Priority.HIGH);
        System.out.println(t.getName()); // Washing up
        System.out.println(t.getPriority().toString()); // This gets the string of HIGH
        System.out.println(t.getPriority().ordinal()); // this gives 4
    }
}

您在类中定义了一个名为Priority的枚举类型,但为了使任务具有优先级,您必须在类中具有Priority类型的成员变量:

public static class Task {
    private String task;
    private Priority priority;

然后,您只需通过设置成员来使用您的任务,例如使用setter方法:

    public Priority getPriority() {
        return priority;
    }
    public Priority setPriority(Priority priority) {
        this.priority = priority;
    }

然后在你的主要方法:

 task.setPriority(Priority.LOW);

关于枚举中的getter/setter,由于Priority类型的语义是表示某个固定优先级,因此不应该有setter。您可能还可以去掉变量本身(因此也可以去掉getter),因为枚举本身很好地代表了任务的优先级(默认情况下,枚举已经有了序号)。

因此,枚举声明可以简单地为:

public enum Priority {
        ZERO, MAYBE, LOW, MEDIUM, HIGH, EXTREME;
}

注意:根据标准的Java代码风格,您不应该将下划线作为成员的开头。请改用camelCase。

最新更新