java - 这是函数、变量还是其他东西

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

最佳答案

根据JLS-8-9 ,

The Identifier in a EnumConstant may be used in a name to refer to the enum constant.

An enum constant may be followed by arguments, which are passed to the constructor of the enum type when the constant is created during class initialization as described later in this section. The constructor to be invoked is chosen using the normal overloading rules (§15.12.2). If the arguments are omitted, an empty argument list is assumed.

所以所以

MES_CONFIG_XSTREAM(MESConstants.MES_CONFIG_XSTREAM_USER, "MES_CONFIG_XSTREAM_USER",    new XStream());

代表一个标识符,它是您通过调用私有(private)构造函数声明的第一个枚举常量(而且似乎是唯一一个) >enumXStreamUserType 具有以下签名:

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

关于java - 这是函数、变量还是其他东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19356451/

相关文章:

java - 为什么使用 <T extends Superclass> 而不仅仅是 Superclass?

java - Hibernate 与连接表的映射异常

java - 如何为一个枚举设置值?

C# 枚举和泛型

java - 可扩展 ListView 中的按钮不可单击

java - 从java中的文件读取并将txt中的int数字保存在数组中

java - 以分钟为单位返回的时间的正确后缀 - Android

c# - 为 View 创建或数据库存储定义选择/下拉选项的最佳实践方法是什么

c# - 如何通过互操作公开 COM 库中定义的枚举作为 C# 函数的返回类型

mysql - 告诉 Hibernate 的 hbm2ddl 为 @Enumerated 注释字段添加 MySQL 枚举列