【问题标题】:Problem with enumerated type in JavaJava中枚举类型的问题
【发布时间】:2011-09-07 18:48:30
【问题描述】:

我是 Java 编程的新手,在让枚举类型工作时遇到了一些问题。在我的程序中,我声明了以下静态变量:

class Employee {

enum Gender {MALE, FEMALE};
static final double NORMAL_WORK_WEEK = 37.5;
static int numberOfFemales;
static int numberOfMales;
Gender sex;
}

我添加了打印相关信息的方法,还有如下方法:

static void registerEmployeeGender(Gender sex) {
switch(sex) {
case MALE:
numberOfMales++; break;
case FEMALE:
numberOfFemales++; break;}
}

在我尝试运行程序的客户端中,我无法使用最后一种方法。假设我创建了一个对象 Employee1,然后输入:

Employee1.registerEmployeeGender(FEMALE);

然后我收到错误消息:FEMALE 无法解析为变量。

是什么导致了这个错误信息?就像我说的,我对 Java 很陌生,这是我第一次尝试使用枚举类型,所以我可能做错了什么。如果有人能给我任何帮助,我将不胜感激。

当然,我在这里只发布了程序的一部分,但这是唯一给我错误消息的部分。如果您需要我发布更多的程序,或者所有的程序,请告诉我。

提前感谢您的帮助!

【问题讨论】:

    标签: java enumerate


    【解决方案1】:

    使用

    Employee1.registerEmployeeGender(Gender.FEMALE);
    

    并确保您在代码中使用以下导入语句

    import static com.example.Employee.Gender.*;
    

    【讨论】:

    • 您从我的回答中匆忙复制的第二个短语实际上并不适用于您最初提出的示例。当您已经指定枚举名称时,您确实不需要static import它。
    • 他的答案比你早 2 分钟到达。他怎么可能抄袭?
    【解决方案2】:

    您需要static import 枚举值,以便能够按照您提供的方式静态使用它们:

    import static com.example.Employee.Gender.*;
    

    然而,通常的做法是只导入枚举

    import com.example.Employee.Gender;
    

    并指定枚举名称:

    Employee1.registerEmployeeGender(Gender.FEMALE);
    

    【讨论】:

    • 好答案。 import static 部分带走了真正的问题,即enum 实例需要被限定
    【解决方案3】:

    要访问枚举项,请像“Gender.FEMALE”一样使用它

    This 可能会为您提供更多帮助。

    【讨论】:

    • 非常感谢!我只是忘了添加性别。之前FEMALE喜欢你指出!感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多