我正在浏览一些应用程序的源代码,但我遇到了这段代码,我无法理解这是什么。
public enum XStreamUserType {
MES_CONFIG_XSTREAM(MESConstants.MES_CONFIG_XSTREAM_USER, "MES_CONFIG_XSTREAM_USER", new XStream());
private int userTypeId;
private String userType;
private XStream xStream;
private XStreamUserType(int userTypeId, String userType, XStream xStream) {
this.userTypeId = userTypeId;
this.userType = userType;
this.xStream = xStream;
switch (this.userTypeId) {
case MESConstants.MES_CONFIG_XSTREAM_USER:
loadConfigReader();
break;
default:
}
}
这条线是什么意思?
MES_CONFIG_XSTREAM(MESConstants.MES_CONFIG_XSTREAM_USER, "MES_CONFIG_XSTREAM_USER", new XStream());
答案 0 :(得分:2)
根据JLS-8-9,
可以在名称中使用EnumConstant中的标识符来引用枚举常量。
枚举常量后面可以跟参数,当在类初始化期间创建常量时,这些参数将传递给枚举类型的构造函数,如本节后面所述。使用正常的重载规则(第15.12.2节)选择要调用的构造函数。如果省略参数,则假定为空参数列表。
因此
MES_CONFIG_XSTREAM(MESConstants.MES_CONFIG_XSTREAM_USER, "MES_CONFIG_XSTREAM_USER", new XStream());
表示标识符,它是您声明的第一个枚举常量(似乎它是唯一的一个),通过调用private constructor
类的enum
XStreamUserType
具有以下签名:
private XStreamUserType(int userTypeId, String userType, XStream xStream)
我认为MESConstants.MES_CONFIG_XSTREAM_USER
评估为int
,"MES_CONFIG_XSTREAM_USER"
为String
而new XStream()
为XStream
(您可以看到与构造函数的匹配)
在正确定义之后,您可以进一步使用新创建的枚举:XStreamUserType.MES_CONFIG_XSTREAM
答案 1 :(得分:1)
这是一个使用在代码中定义较低的构造函数创建的枚举常量。
这是构造函数:
private XStreamUserType(int userTypeId, String userType, XStream xStream) {
//...
}
答案 2 :(得分:0)
它是枚举的一个元素,用它的构造函数初始化
c'tor:
private XStreamUserType(int userTypeId, String userType, XStream xStream)
你的枚举只有一个元素MES_CONFIG_XSTREAM
但是在逗号分隔的列表中你可以添加更多元素。
例如,请查看此页:Enum Types
答案 3 :(得分:0)
这是一个枚举常量声明。请注意与上一个行星示例here的类比。
答案 4 :(得分:0)
在java中,enum还可以包含实例变量和类似的构造函数。
此处enum XStreamUserType
有三个实例变量
private int userTypeId;
private String userType;
private XStream xStream;
,而
private XStreamUserType(int userTypeId, String userType, XStream xStream) {
this.userTypeId = userTypeId;
this.userType = userType;
this.xStream = xStream;
switch (this.userTypeId) {
case MESConstants.MES_CONFIG_XSTREAM_USER:
loadConfigReader();
break;
default:
}
}
是构造函数。
MES_CONFIG_XSTREAM
是枚举变量(可以解释为类的对象),初始化为MES_CONFIG_XSTREAM(MESConstants.MES_CONFIG_XSTREAM_USER, "MES_CONFIG_XSTREAM_USER", new XStream());
,其实例变量的值(作为构造函数调用)。