【发布时间】:2014-06-11 04:36:31
【问题描述】:
我遇到了静态问题,该程序无法编译。编译器说
Enums.java:27: non-static variable this cannot be referenced from a static context
SexEnum a = new SexEnum(Sex.MALE);
^
Enums.java:28: non-static variable this cannot be referenced from a static context
SexEnum b = new SexEnum(Sex.FEMALE);
但是,如果我在下一行添加一个“静态”关键字,一切都会好起来的。
public static class SexEnum{
/////////////////////////////////////// /////////////////////////////////////////p>
public class Enums{
enum Sex{MALE, FEMALE};
public class SexEnum{ // something wrong this line
private Sex sex;
public SexEnum(Sex sex){
this.sex = sex;
}
public void info(){
Sex s = this.sex;
switch(s){
case MALE:
System.out.println("I'm a male.");
break;
case FEMALE:
System.out.println("I'm a female.");
break;
default:
System.out.println("I'm not a human.");
break;
}
}
}
public static void main(String[] argv){
SexEnum a = new SexEnum(Sex.MALE);
SexEnum b = new SexEnum(Sex.FEMALE);
a.info();
b.info();
}
}
谁能给我解释一下?谢谢。
【问题讨论】:
-
这与
enum的要求以及您声明的类是内部类这一事实有关 - 看看Why can't I create an enum in an inner class in Java? 这可能是一个重复的问题 -
@MadProgrammer 这是一条完全不同的错误消息,但枚举并没有立即与问题相关。
-
您不必“必须添加静态”。有几种解决方案:这是其中之一。您需要查看 this answer 以获得正确的枚举值。
-
@user2864740 你可能是对的,没有注意到 OP 正在创建一个
enum -
@EJP 感谢您的指点。
标签: java class oop static enums