Java:匿名枚举?

Java:匿名枚举?,java,Java,Java是否有匿名枚举的可能性 例如,我希望我的类有一个变量,其值可以是5种不同设置中的一种。很明显,这个变量应该是一个枚举。但这是唯一一个使用特定枚举的地方。通常我会在变量的正上方声明一个枚举类型,然后将变量声明为该类型,但我想知道是否有更简洁的方法。Java支持匿名枚举吗 例如: public class Test { public enum Option { FirstOption, SecondOption, ThirdOption

Java是否有匿名枚举的可能性

例如,我希望我的类有一个变量,其值可以是5种不同设置中的一种。很明显,这个变量应该是一个枚举。但这是唯一一个使用特定枚举的地方。通常我会在变量的正上方声明一个枚举类型,然后将变量声明为该类型,但我想知道是否有更简洁的方法。Java支持匿名枚举吗

例如:

public class Test {
    public enum Option {
        FirstOption,
        SecondOption,
        ThirdOption
    }
    Option option;
}

有没有一种方法可以避免声明
公共枚举选项
,而只允许将选项变量设置为FirstOption、SecondOption或ThirdOption,而不考虑“Option”类型?

没有Java不支持匿名
枚举
s

只需在类内声明它们,而不具有外部可见性:

public class Test {
  private static enum Option {
    FirstOption,
    SecondOption,
    ThirdOption
  }

  Option option;
}

如果枚举类型是私有的,如何从外部类向
选项
赋值?将其类型设置为private有什么好处?@Ricket在上面的示例中,
选项
只能在
测试
类中访问,这就是您所描述的Wanting。当它是匿名的时候,您打算如何分配它?将枚举设置为private允许您对api的用户隐藏它。您可以通过使用
字符串
并使用
选项来从外部分配值。valueOf(String)
,或者您真正想要的任何输入指示。一般来说,像您要求的那样匿名化或隐藏枚举是没有意义的。@也许我误解了您的问题,但听起来好像它只在类内部使用,因此我将其设置为私有的。如果你想在课堂之外使用它,那么
public
是一个明显的选择。但是如果在类之外使用它,则需要类型的名称,因为需要为该类型声明参数、变量或返回类型。