Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这是函数、变量还是其他什么_Java_Enums - Fatal编程技术网

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:
    }
}