2012-12-14 129 views
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; 
+0

你在调用该方法时面临什么问题?似乎它应该工作。当然,第一个是更好的方法。 –

+0

Thankyou ...如果使用第一个方法不执行我也使用调试工具 –

回答

1

任何枚举类型的值都可以使用toString()方法转换为String。您可能没有意识到(我最初并没有)如果您声明RepeatType变量r1,那么可以使用toString()方法E.G.将r1转换为Stringr1.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 
+0

Thankyou ...你可以调用使用Bean类,这意味着如何定义数据类型.. –

+0

您是否只在Bean类中使用重复类型?如果是这样,只需在Bean类的(内部)中定义Enum RepeatType即可。如果您还在Bean类之外使用RepeatType,则可能有助于将RepeatType声明为公共枚举 –

+0

请参阅此URL以获取公共枚举示例:(搜索EnumTest)http://docs.oracle.com/javase/tutorial/ java/javaOO/enum.html –

1

每种枚举类型都具有内置的方法name()获得枚举名称为StringvalueOf(String)在另一个方向走。这可能是你正在寻找的。

+0

其实我创建字符串类型并转换为列表

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; 
    // ... 
} 

而且在我的服务方法我转换为枚举(WeekdayType)列表,所以它很容易...

List<WeekdayType> weekdayList= new ArrayList<WeekdayType>(); 
    weekdayList.add(timetableVO.getRepeatDays()); 
List<Date> repeatDaysList = Schedule.generateSchedule(timetableVO.getRepeatType() , weekdayList); 
+0

请将此问题标记为已解决。 (单击提供解决方案的答案旁边的复选标记。) –

相关问题