-5

私はここでクラスオブジェクト内に列挙型を取得して設定しようとしていますが、その方法がわかりません。これは私がこれまでに持っているものです。いくつかの例は複雑すぎて理解できないように思われるかもしれませんが、すべて調べました。何か助けてください?

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());

}

}

4

2 に答える 2

8

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
    }
}
于 2013-02-17T21:24:54.507 に答える
0

クラスで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);

列挙型のゲッター/セッターに関しては、優先度タイプのセマンティクスは特定の固定優先度を表すため、セッターは使用しないでください。列挙型自体がタスクの優先度を適切に表しているため(列挙型にはデフォルトですでに序数があります)、変数自体(したがってゲッター)を取り除くこともできます。

したがって、列挙型宣言は単純に次のようになります。

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

注:標準のJavaコードスタイルでは、メンバーの先頭にアンダースコアを付けないでください。代わりにキャメルケースを使用してください。

于 2013-02-17T21:22:22.520 に答える