0

実際、私のJavaプログラムは...

public class Schedule {
    public static enum RepeatType {
        DAILY, WEEKLY, MONTHLY;
    }

    public static enum WeekdayType {
        MONDAY(Calendar.MONDAY), TUESDAY(Calendar.TUESDAY), 
        WEDNESDAY(Calendar.WEDNESDAY), THURSDAY(Calendar.THURSDAY),
        FRIDAY(Calendar.FRIDAY), SATURDAY(Calendar.SATURDAY), SUNDAY(Calendar.SUNDAY);

        private int day;

        private WeekdayType(int day) {
            this.day = day;
        }

        public static List<Date> generateSchedule(RepeatType repeatType,List<WeekdayType> repeatDays) {
            // ...
            // here some logic i wrote
        }
    }
}

そして、私は次のようにビジネスクラスにメソッドを呼び出しています...

@RemotingInclude
public void createEvent(TimetableVO timetableVO) {
    if ("repeatDays".equals(timetableVO.getSearchKey())) {
        List<Date> repeatDaysList = Schedule.generateSchedule(timetableVO.getRepeatType() , timetableVO.getRepeatDays());
    }
}

そして最後TimetableVO

@Entity
@Table(name="EC_TIMETABLE")
public class TimetableVO extends AbstractVO {
    // ...
    private RepeatType repeatType;

    // But in this case the method generateSchedule(-,-) was not calling.
    private List<WeekdayType> repeatDays;
    // ... 
}

だから私の質問は、次の中でどちらがより良いステートメントであるかです...

 private List<WeekdayType> repeatDays;

(また)

 // If we give like this `How to Convert Enum type to String` because generateSchedule() method taking enum type value....
 private String repeatDays; 
4

3 に答える 3

1

すべての列挙型にはname()、列挙型名を として取得しStringvalueOf(String)逆方向に進むメソッドが組み込まれています。それはおそらくあなたが探しているものです。

于 2012-12-14T05:05:16.397 に答える
1

列挙型の値は、 toString() メソッドを使用して String に変換できます。RepeatTypevariabler1を宣言すると、メソッド EGを使用してr1に変換できることに気付いていないかもしれません (最初は知りませんでした)。StringtoString()r1.toString()

このプログラム:

public class Main {

    /** Creates a new instance of Main */
    public Main() {
    }

    public static enum RepeatType {
        DAILY, WEEKLY, MONTHLY;
    }    

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        RepeatType r1;
        r1 = RepeatType.DAILY;
        System.out.printf("R1 VALUE: %s\n", r1.toString());

        r1 = RepeatType.WEEKLY;
        System.out.printf("R1 VALUE: %s\n", r1.toString());

        r1 = RepeatType.MONTHLY;
        System.out.printf("R1 VALUE: %s\n", r1.toString());


    }

}

次のように実際の列挙値を出力します。

R1 VALUE: DAILY
R1 VALUE: WEEKLY
R1 VALUE: MONTHLY
于 2012-12-14T05:19:00.483 に答える
0

最後に、次を使用して正しい回答を得ました..

    @Entity
@Table(name="EC_TIMETABLE")
public class TimetableVO extends AbstractVO {
    // ...
    private RepeatType repeatType;

    // But in this case the method generateSchedule(-,-) was not calling.
    private WeekdayType repeatDays;
    // ... 
}

そして、私のサービスメソッドでは、Enum(WeekdayType)からListに変換しているので簡単です...

    List<WeekdayType> weekdayList= new ArrayList<WeekdayType>();
    weekdayList.add(timetableVO.getRepeatDays());
List<Date> repeatDaysList = Schedule.generateSchedule(timetableVO.getRepeatType() , weekdayList);
于 2012-12-14T09:34:09.417 に答える