Java 为什么不能正确解析此枚举类型?

Java 为什么不能正确解析此枚举类型?,java,enums,Java,Enums,以下java代码不在eclipse中编译。我做错了什么?如果该方法只返回一个int而不是enum,则一切正常,因此基本上设置为ok。问题在于引入枚举返回类型 public class myclass { public enum mytype { mytype2, mytype1, }; public static mytype retmytype() { return mytype2; } } //in another class mycla

以下java代码不在eclipse中编译。我做错了什么?如果该方法只返回一个
int
而不是
enum
,则一切正常,因此基本上设置为ok。问题在于引入枚举返回类型

public class myclass {
  public enum mytype {
      mytype2,
      mytype1,  
  };
  public static mytype retmytype() {
    return mytype2;
  }
}

//in another class
myclass.mytype t = myclass.retmytype(); //ERROR - myclass.mytype cannot be solved

尝试替换
返回mytype2
by
返回mytype.mytype2

顺便说一下,您应该遵循Java命名约定;)

我认为您忘记了一个main方法(或者您的程序流中任何其他被调用的方法)。 试试这个:

public class myclass {
  public enum mytype {
      mytype2,
      mytype1,  
  };
  public static mytype retmytype() {
    return mytype.mytype2;
  }
  public static void main(String[] args){
    myclass.mytype t = myclass.retmytype();
  }
}

使用
camelCase
man@LuiggiMendoza内部枚举始终是静态的,即使它不是静态的specified@LuiggiMendoza如果枚举是一个类的成员,它是隐式的static@Daniel对不起,我忘了一会儿。除此之外,在方法
retmytype()
中,您应该
返回mytype.mytype2(名称必须是限定的),这应该有效。错误的原因是你没有给我们看的东西。您是否有一个旧的类文件
myclass.class
被提取?这些类在不同的包中吗?您是否正确导入了
myclass
?@glutz您可能会忘记用main方法包围您的调用;)例如。你可能会接到“空中”的电话。