这是一个函数,变量还是其他东西

时间:2013-10-14 08:44:44

标签: 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;

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());

5 个答案:

答案 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"Stringnew 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());,其实例变量的值(作为构造函数调用)。