Java 这是函数、变量还是其他什么
我在浏览某个应用程序的源代码时遇到了这段代码,我无法理解这是什么Java 这是函数、变量还是其他什么,java,enums,Java,Enums,我在浏览某个应用程序的源代码时遇到了这段代码,我无法理解这是什么 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; priva
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());
它是枚举的一个元素,用它的构造函数初始化 主持人:
private XStreamUserType(int userTypeId, String userType, XStream xStream)
枚举只有一个元素,MES\u CONFIG\u XSTREAM
,但在逗号分隔的列表中,可以添加更多元素
有关示例,请查看此页面:这是一个枚举常量,由代码中较低位置定义的构造函数创建 以下是构造函数:
private XStreamUserType(int userTypeId, String userType, XStream xStream) {
//...
}
它是一个枚举常量声明。请注意与上一个行星示例的类比。根据 枚举常量中的标识符可用于引用枚举常量的名称中 枚举常量后面可能跟有参数,如本节后面所述,在类初始化期间创建该常量时,这些参数将传递给枚举类型的构造函数。使用正常重载规则(§15.12.2)选择要调用的构造函数。如果省略参数,则假定参数列表为空 所以
MES_CONFIG_XSTREAM(MESConstants.MES_CONFIG_XSTREAM_USER, "MES_CONFIG_XSTREAM_USER", new XStream());
表示标识符,它是您通过调用enum
类XStreamUserType
的私有构造函数声明的第一个枚举常量(似乎它是唯一的一个),该类具有以下签名:
private XStreamUserType(int userTypeId, String userType, XStream xStream)
我假设MESConstants.MES_CONFIG_XSTREAM_USER
的计算结果为int
,“MES_CONFIG_XSTREAM_USER”
是字符串,而new XSTREAM()
是XSTREAM
(您可以看到与构造函数的匹配)
正确定义后,您可以进一步使用新创建的枚举作为:XStreamUserType.MES\u CONFIG\u XSTREAM
在java枚举中也可以像类一样使用实例变量和构造函数
这里enum XStreamUserType
有三个实例变量
private int userTypeId;
private String userType;
private XStream xStream;
当
是构造函数
MES_CONFIG_XSTREAM
是枚举变量(可以解释为类的对象),初始化为MES_CONFIG_XSTREAM(MESConstants.MES_CONFIG_XSTREAM_USER,“MES_CONFIG_XSTREAM_USER”,new XSTREAM())代码>及其实例变量的值(作为构造函数调用)。阅读.hi loan上的文档,我可以知道“调用枚举的私有构造函数”是什么意思吗?这些枚举类型有声明吗??它在哪里?和其他对象一样,枚举也有构造函数。正如您所看到的,它是私有的(检查您发布的代码)-它不能被保护或公开(如果您设置它们,那么您将有编译时错误)。请检查我在第一句中的链接,然后转到第8.9.2节。您将找到有关枚举体声明的所有详细信息。
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:
}
}