我有一个关于在java类中编写多个枚举的问题.我们可以这样吗?
你能帮我解决一下如何完成这个吗?
对于Ex:
public final class Test{
public enum Unit{
HORIZONTAL("HORIZONTAL");
}
public enum Code {
COMPANY ("COMPANY");
}
public enum Version{
ONE(1)
}
}
Run Code Online (Sandbox Code Playgroud)
您确实可以在类中定义多个枚举,但是您的每个枚举都需要一个构造函数来处理括号中的参数,即
public enum Unit {
HORIZONTAL("HORIZONTAL"), VERTICAL("VERTICAL");
private String unit;
Unit(String unit) {
this.unit = unit;
}
}
Run Code Online (Sandbox Code Playgroud)
或者
Version(int versionNumber){}
Run Code Online (Sandbox Code Playgroud)
如需进一步解释,请指明问题。
Java中的枚举定义是一个类.该语言提供了枚举特有的语法特性,但就JVM而言,枚举是一个类.
实际上,声明的枚举:
public enum MyConstants{ ... }
Run Code Online (Sandbox Code Playgroud)
在JVM上实现为:
public static class Enum<MyConstants> { ... }
Run Code Online (Sandbox Code Playgroud)
因此,声明枚举类的规则与声明类的规则相同..java文件可能只有一个公共类.
因此,您只能在.java文件中声明一个公共枚举.您可以声明任意数量的包私有枚举.
如果你有多个密切相关的枚举,那么将它们全部声明为封闭类的嵌套成员是没有害处的:
public class MyEnumContainer {
static enum MyEnum1 { ... }
static enum MyEnum2 { ... }
:
:
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您需要导入MyEnclosingClass,或者将常量引用为MyEnclosingClass.MyEnum1.ENUM_ONE.请注意,所有枚举都是静态类,因此使用static关键字不会对您造成不利影响,但这不是必需的.
每个成员枚举定义必须独立(即,它必须是完整的枚举定义).如果你有与常量相关的数据,那么每个枚举定义都需要它自己的实例字段和构造函数.如果您有特定于常量的方法,则每个枚举都需要提供方法.
如果您担心大量代码重复,可以将公共代码放入私有静态助手类,然后将方法调用转发给枚举定义中的那些.
使用枚举定义,嵌套枚举应类似于:
public final class Test{
public enum Unit {
HORIZONTAL ("HORIZONTAL"),
VERTICAL ("VERTICAL"),
:
:
DIAGONAL ("DIAGONAL");
private final String e_name;
Unit(String name)
{ this.e_name = name; }
public String getName() { return e_name; }
}
public enum Code {
:
:
}
public enum Version{
:
:
}
}
Run Code Online (Sandbox Code Playgroud)