当前位置: 首页 > 面试题库 >

Java枚举-自定义名称

越涵衍
2023-03-14
问题内容

我想要一个Java枚举,其值是整数。

例如:

public enum TaskStatus {
    TaskCreated(1), 
    TaskDeleted(2)    
}

但是我也想要这两个常量的自定义名称,
例如“ Task Created”和“ Task Deleted”(那里有空格)。
我想尽可能优雅地做到这一点,而无需编写
太多额外的代码。

我可以在没有其他
将枚举常量映射到其自定义名称的映射的情况下实现此目标吗?

我在该项目中使用JDK 6。


问题答案:

只需为此添加一个字段:

public enum TaskStatus {
    TaskCreated(1, "Task Created"), 
    TaskDeleted(2, "Task Deleted");

    private final int value;
    private final String description;

    private TaskStatus(int value, String description) {
        this.value = value;
        this.description = description;
    }

    // Getters etc

    // Consider overriding toString to return the description
}

如果您不想指定字符串,而只想在每个大写字母前添加一个空格,那也是可行的-但我个人还是会坚持使用上述方法,以实现简单性和灵活性。(它将说明与标识符分开。)

当然,如果您要使用i18n,则应该只将枚举值名称用作资源文件的键。



 类似资料:
  • 在不使用其他映射( 将枚举常量映射到它们的自定义名称)的情况下,我能做到这一点吗? 我在这个项目中使用JDK6。

  • 问题内容: 我以为我很了解Java泛型,但是随后在java.lang.Enum中遇到了以下内容: 有人可以解释如何解释此类型参数吗?奖励点,用于提供可以使用类似类型参数的其他示例。 问题答案: 这意味着枚举的类型参数必须从本身具有相同类型参数的枚举派生。怎么会这样 通过使类型参数成为新类型本身。因此,如果我有一个名为StatusCode的枚举,则它等效于: 现在,如果你检查的限制,我们已经得到了-

  • enum 关键字允许创建一个代表数个可能变量的数据的类型(原文:The enum keyword allows the creation of a type which may be one of a few different variants.若您对此句有 更好的翻译或理解,希望指出来,谢谢。)。在 struct 中任何合法的变量在 enum 同样是合法的。 // 隐藏未使用代码警告的属性。

  • 为什么要在C++11中编译: 但这不是:

  • 但有些时候我们需要控制枚举的类型,那么我们可以 Enum 派生出自定义类来满足这种需要。通过修改上面的例子: #!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum, unique Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Au

  • 让我们看看一个需要诉诸于代码的场景,来考虑为何此时使用枚举更为合适且实用。假设我们要处理 IP 地址。目前被广泛使用的两个主要 IP 标准:IPv4(version four)和 IPv6(version six)。这是我们的程序可能会遇到的所有可能的 IP 地址类型:所以可以 枚举 出所有可能的值,这也正是此枚举名字的由来。 任何一个 IP 地址要么是 IPv4 的要么是 IPv6 的,而且不能