我已经阅读了Java和C++之间的枚举差异问题?但是我还是很困惑。
我想以下返回相关的字符串:
public enum Checker {
EMPTY ("Empty"),
RED ("Red"),
YELLOW ("Yellow");
}
据我所读,这应该是可能的。只是希望您对如何实现它有所了解。
您需要一个构造函数,一个字段和一个吸气剂。
枚举类型可以具有构造函数,只要它们的访问级别为私有或默认(包私有)即可。除了枚举声明本身之外,您不能直接调用这些构造函数。与类相似,当定义不带参数的枚举常量时,实际上是调用由编译器生成的默认构造函数。例如
public enum King {
ELVIS
}
相当于
public enum King {
ELVIS() // the compiler will happily accept this
}
就像在类中一样,如果您定义显式构造函数,则编译器将不会插入默认构造函数,因此将无法编译:
public enum King {
ELVIS, // error, default constructor is not defined
MICHAEL_JACKSON(true)
;
private boolean kingOfPop;
King(boolean kingOfPop){this.kingOfPop = kingOfPop;}
}
这是一个很好的枚举参考,也解释了构造函数的问题。
枚举是常量,因此是不可变的。但是,他们可以定义可以具有状态的字段。这是一个可怕的做法,因为开发商会希望枚举和它们相关联的值是常量,但你 可以
仍然与getter和setter枚举定义一个非最终场。
这是合法的Java代码:
public enum Color {
RED("FF0000"),
GREEN("00FF00"),
BLUE("0000FF");
private String code;
public String getCode(){return code;}
public void setCode(String code){this.code = code;}
private Color(String code){this.code = code;}
}
但是它启用了这样的邪恶代码:
String oldBlue = Color.BLUE.getCode();
Color.BLUE.setCode(Color.RED.getCode());
Color.RED.setCode(oldBlue);
因此,在99.99%的情况下:如果枚举中包含字段,则应将它们定型并仅提供吸气剂。如果字段本身不是一成不变的,请提供防御性副本:
public enum Band {
THE_BEATLES("John","Paul","George","Ringo");
private final List<String> members;
public List<String> getMembers(){
// defensive copy, because the original list is mutable
return new ArrayList<String>(members);
}
private Band(String... members){
this.members=Arrays.asList(members);
}
}
在您的情况下,这非常简单:您只需要一个字符串类型的字段(不可变),因此在构造函数中对其进行初始化并提供getter完全可以:
public enum Checker {
EMPTY ("Empty"),
RED ("Red"),
YELLOW ("Yellow");
private final String value;
private Checker(final String value) {
this.value = value;
}
public String getValue() { return value; }
}
我正在使用swagger-codemen-maven-plugin(2.2.1)从YML配置生成java和打字代码类文件。我有两个问题。 如何在YML中定义枚举属性数组? 如何在YML中定义map属性枚举为key,布尔值为value? 让我知道这是可能的还是有任何解决办法?目前,我在java和typescrtipt中定义了enum类,并将其作为字符串传递。谢谢 招摇过市枚举文件 地图物业 更新:
问题内容: 我以为我很了解Java泛型,但是随后在java.lang.Enum中遇到了以下内容: 有人可以解释如何解释此类型参数吗?奖励点,用于提供可以使用类似类型参数的其他示例。 问题答案: 这意味着枚举的类型参数必须从本身具有相同类型参数的枚举派生。怎么会这样 通过使类型参数成为新类型本身。因此,如果我有一个名为StatusCode的枚举,则它等效于: 现在,如果你检查的限制,我们已经得到了-
让我们看看一个需要诉诸于代码的场景,来考虑为何此时使用枚举更为合适且实用。假设我们要处理 IP 地址。目前被广泛使用的两个主要 IP 标准:IPv4(version four)和 IPv6(version six)。这是我们的程序可能会遇到的所有可能的 IP 地址类型:所以可以 枚举 出所有可能的值,这也正是此枚举名字的由来。 任何一个 IP 地址要么是 IPv4 的要么是 IPv6 的,而且不能
本文向大家介绍如何计算C#枚举中定义的项目总数?,包括了如何计算C#枚举中定义的项目总数?的使用技巧和注意事项,需要的朋友参考一下 枚举是一种特殊的“类”,代表一组常量(不可更改/只读变量)。 要创建枚举,请使用enum关键字(而不是类或接口),并用逗号分隔枚举项- 默认情况下,枚举的第一项的值为0。第二项的值为1,依此类推。 要从项目中获取整数值,必须将项目显式转换为int 您还可以分配自己的枚
是否可以使用枚举来定义键?(映射返回int String、Object。但这不是问题的一部分) 谢谢你的帮助。
enum 关键字允许创建一个代表数个可能变量的数据的类型(原文:The enum keyword allows the creation of a type which may be one of a few different variants.若您对此句有 更好的翻译或理解,希望指出来,谢谢。)。在 struct 中任何合法的变量在 enum 同样是合法的。 // 隐藏未使用代码警告的属性。