【发布时间】:2018-09-27 19:30:55
【问题描述】:
我正在构建一个应用程序来安排每 60 分钟、30 分钟、15 分钟等一次提醒。用户选择提醒间隔(60分钟、30分钟等)
问题 1) 我的班级中有一个 switch 语句,用于检查提醒间隔的值。我已经在枚举中定义了值。
//Enum defined in a separate file, not inside the classes SetupSchedule,ExecuteSchedule
public enum ValidInterval {
HOUR, HALFHOUR, QUARTERHOUR, TENMINUTE, FIVEMINUTE
}
我需要在两个单独的类中使用这个枚举。
public class SetupSchedule {
public void setUpUserSchedule(String reminderInterval, boolean setSnoozeOff, boolean interruptIndicator) {
switch(reminderInterval) {
case HOUR : someAction();
break;
case HALFHOUR :someAction();
break;
}
}
}
public class ExecuteSchedule {
public void executeUserSchedule(String reminderInterval, boolean setSnoozeOff, boolean interruptIndicator) {
switch(reminderInterval) {
case HOUR : someAction();
break;
case HALFHOUR :someAction();
break;
}
}
}
用户请求的结构:
public class UserSchedule {
@Id
private String id;
@EnumValidator(enumClazz = ValidInterval.class)
@NotBlank
private String frequencyType;
@NotBlank
private boolean allowSnooze;
@NotBlank
private boolean interruptInd;
}
我收到的错误:Eclipse 显示 HOUR, HALFHOUR 无法解析为变量的错误。
注意:这不是关于如何使用枚举的重复问题,因为枚举存储在单独的文件中;不在使用它的同一类中。我搜索了此问题的答案,但找不到。
请不要标记为重复。
【问题讨论】:
-
ValidInterval.HOUR。您需要使用完整的枚举名称在其类之外引用它。
-
那不是有效的 Java。不能在课堂上直接使用
switch语句。必须在一个方法中。另外,reminderInterval是什么? -
@BakonJarser 除了在
enum上的switch语句中,case的值必须是不合格的。当然,它要求开关变量reminderInterval实际上是ValidInterval类型,但无论如何,对于枚举,case 值始终是不合格的。 -
@Andreas,reminderInterval 由用户设置。可以取值 HOUR、HALFHOUR、QUARTERHOUR、TENMINUTE、FIVEMINUTE
-
@user1478392 但是什么呢?
String?ValidInterval? 编辑问题并将代码修正为有效的 Java,并包含说明或代码显示reminderInterval是什么类型。
标签: java enums properties switch-statement