2011-09-07 107 views
3

我对Java编程非常陌生,并且在枚举类型工作时遇到了一些问题。在我的节目我已经宣布了下述静态变量: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;} 
} 

在我的客户,我attemt运行该程序,我无法使用这最后一种方法。假设我创建了一个对象Employee1,然后键入:

Employee1.registerEmployeeGender(FEMALE); 

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

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

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

在此先感谢您的帮助!

+3

尝试Gender.FEMALE – Marvo

回答

7

使用

Employee1.registerEmployeeGender(Gender.FEMALE); 

,并确保你让下面的import语句在你的代码

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

第二届帕然而,你从我的答案中匆匆复制的那个不适用于你最初提出的例子。只要你已经指定了枚举名,你就不需要“静态导入”。 – BalusC

+0

他的回答在你的2分钟前到达。他怎么能复制它? – bos

1

要访问的枚举项目使用这样的 “Gender.FEMALE”

This可能会帮助您更多。

+0

非常感谢!我只是忘了添加性别。女性之前像你指出的一样!我感谢您的帮助! – Kristian

5

您需要static import为了枚举值可以静态地用他们的方式为您呈现:

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

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

import com.example.Employee.Gender; 

并指定枚举的名称,以及:

Employee1.registerEmployeeGender(Gender.FEMALE); 
+0

很好的答案。 'import static'部分取消了真正的问题,即'enum'实例需要合格 –