Java中枚举类型的问题

Kri*_*ian 3 java enumerate

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

class Employee {

enum Gender {MALE, FEMALE};
static final double NORMAL_WORK_WEEK = 37.5;
static int numberOfFemales;
static int numberOfMales;
Gender sex;
}
Run Code Online (Sandbox Code Playgroud)

我添加了一种打印相关信息的方法,以及以下方法:

static void registerEmployeeGender(Gender sex) {
switch(sex) {
case MALE:
numberOfMales++; break;
case FEMALE:
numberOfFemales++; break;}
}
Run Code Online (Sandbox Code Playgroud)

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

Employee1.registerEmployeeGender(FEMALE);
Run Code Online (Sandbox Code Playgroud)

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

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

当然,我只在这里发布了部分程序,但这是给我一个错误信息的唯一部分.如果您需要我发布更多的程序或全部内容,请告知我们.

在此先感谢您的帮助!

con*_*ius 7

使用

Employee1.registerEmployeeGender(Gender.FEMALE);
Run Code Online (Sandbox Code Playgroud)

并确保您在代码中生成以下import语句

import static com.example.Employee.Gender.*;
Run Code Online (Sandbox Code Playgroud)


Bal*_*usC 5

你需要static import枚举值,以便能够像你提出的那样静态地使用它们:

import static com.example.Employee.Gender.*;
Run Code Online (Sandbox Code Playgroud)

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

import com.example.Employee.Gender;
Run Code Online (Sandbox Code Playgroud)

并指定枚举名称:

Employee1.registerEmployeeGender(Gender.FEMALE);
Run Code Online (Sandbox Code Playgroud)