Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在2个类中使用enum并在属性文件中存储特定于Java的类型_Java_Enums_Properties_Switch Statement - Fatal编程技术网

如何在2个类中使用enum并在属性文件中存储特定于Java的类型

如何在2个类中使用enum并在属性文件中存储特定于Java的类型,java,enums,properties,switch-statement,Java,Enums,Properties,Switch Statement,我正在构建一个应用程序来安排每60分钟、30分钟、15分钟等一次提醒。用户选择提醒间隔60分钟、30分钟等 问题1我的类中有一个switch语句,用于检查rementerinterval的值。我已经在枚举中定义了值 我需要在两个单独的类中使用这个枚举 public class SetupSchedule { public void setUpUserSchedule(String reminderInterval, boolean setSnoozeOff, boolean interruptI

我正在构建一个应用程序来安排每60分钟、30分钟、15分钟等一次提醒。用户选择提醒间隔60分钟、30分钟等

问题1我的类中有一个switch语句,用于检查rementerinterval的值。我已经在枚举中定义了值

我需要在两个单独的类中使用这个枚举

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显示了一个错误,即小时、半小时不能解析为变量

注意:这不是如何使用枚举的重复问题,因为枚举存储在单独的文件中;不在使用它的同一类中。我寻找这个问题的答案,但没有找到


请不要标记为重复。

您需要先写入枚举名称,然后写入变量:

public class SetupSchedule {
    switch(reminderInterval) {
        case ValidInterval.HOUR:
            someAction();
            break;
        case ValidInterval.HALFHOUR:
            someAction();
            break;                     
    }
}

您还需要将此开关插入一个方法中,您不能将其留在类

ValidInterval.HOUR中。您需要使用完整的枚举名在其类之外引用它。这不是有效的Java。不能在类中直接使用switch语句。必须在一个方法中。此外,什么是reminderInterval?@BakonJarser,枚举上的switch语句除外,其中case值必须是非限定的。当然,它要求开关变量reminderInterval实际上是ValidInterval类型,但无论如何,对于枚举,大小写值始终是非限定的。@Andreas,reminderInterval由用户设置。它可以取小时、半小时、四分之一小时、十分钟,FIVEMINUTE@user1478392但这是什么呢?一根绳子?有效期?编辑问题并将代码修复为有效的Java,并包含说明或代码,显示reminderInterval是什么类型。如果reminderInterval是ValidInterval,则大小写值必须为非限定值。如果没有,那么使用ValidInterval进行限定将永远不会起作用。另外,您需要在方法中插入此开关-OP的switch语句已经在方法executeUserSchedule中。@LuCio当我发布此answare时,它与我发布此answare的方式不同above@Bonfra04检查问题的历史记录。你说得对。
public class SetupSchedule {
    switch(reminderInterval) {
        case ValidInterval.HOUR:
            someAction();
            break;
        case ValidInterval.HALFHOUR:
            someAction();
            break;                     
    }
}