我想要一个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 的,而且不能