基本上,我所做的是为州写一个枚举,我不仅希望能够像州一样访问它们,而且还希望访问它们的缩写以及它们是否是原始殖民地。
public enum States {
...
MASSACHUSETTS("Massachusetts", "MA", true),
MICHIGAN("Michigan", "MI", false),
...; //so on and so forth for all fifty states
private final Object[] values;
States(Object... vals) {
values = vals;
}
public String FULL() {
return (String) values[0];
}
public String ABBR() {
return (String) values[1];
}
public boolean ORIGINAL_COLONY(){
return (boolean) values[2];
}
}
这似乎按我预期的那样工作。我可以
System.out.println(States.ALABAMA); // Prints "ALABAMA"
System.out.println(States.ALABAMA.FULL()); // Prints "Alabama"
System.out.println(States.ALABAMA.ABBR()); // Prints "AL"
System.out.println(States.ALABAMA.ORIGINAL_COLONY());// Prints "false"
对于涉及枚举的特定情况,这是执行此操作的最佳方法,还是设置和格式化此枚举的更好方法?预先感谢所有人!
首先,枚举方法不应大写。它们是与其他方法一样的方法,具有相同的命名约定。
其次,您所做的并不是建立枚举的最佳方法。不要为每个值使用值的数组,而应为每个值使用单独的变量。然后,您可以像其他任何类一样实现构造函数。
以下是所有上述建议的处理方式:
public enum States {
...
MASSACHUSETTS("Massachusetts", "MA", true),
MICHIGAN ("Michigan", "MI", false),
...; // all 50 of those
private final String full;
private final String abbr;
private final boolean originalColony;
private States(String full, String abbr, boolean originalColony) {
this.full = full;
this.abbr = abbr;
this.originalColony = originalColony;
}
public String getFullName() {
return full;
}
public String getAbbreviatedName() {
return abbr;
}
public boolean isOriginalColony(){
return originalColony;
}
}
枚举类(“新的枚举”/“强类型的枚举”)主要用来解决传统的C++枚举的三个问题: 传统C++枚举会被隐式转换为int,这在那些不应被转换为int的情况下可能导致错误 传统C++枚举的每一枚举值在其作用域范围内都是可见的,容易导致名称冲突(同名冲突) 不可以指定枚举的底层数据类型,这可能会导致代码不容易理解、兼容性问题以及不可以进行前向声明 枚举类(enum)(“强类型枚举”)是强类型的,并且具有类
问题内容: 我必须完成一个奇怪的特殊情况。其描述如下: 我必须设计一个地图,其中“ 键 ”始终为 字符串 类型。但是,其中一个键的“ 值 ”可以是 字符串或列表 (取决于特定键可以具有的值数。如果该特定键只有一个值,并且必须如果键包含许多值,则为列表)。如何完成这种情况? 例如:在映射中有2个键,分别是“名称”和“电话号码”。一个人只能有一个名字和多个电话号码。因此,此处的第一个键(即“名称”)的
问题内容: 什么是C#的Java等价物: 问题答案: 如果需要属性,则需要这样定义: 您可以这样使用它: 要意识到的是,这只是创建类的捷径,因此您可以向该类添加所需的任何属性和方法。 如果您不想在自己的方法上定义任何方法,则可以更改成员变量的范围并进行设置,但这不是它们在Sun网站上的示例中所做的。
问题内容: 我想拥有一个Class对象,但是我想强迫它代表的任何类扩展A类并实现接口B。 我可以: 要么: 但我不能两者都做。有没有办法做到这一点? 问题答案: 实际上,你可以做你想做的事。如果要提供多个接口或一个类加接口,则必须使通配符看起来像这样: 请参见sun.com上的泛型教程,特别是页面底部的“ 绑定类型参数”部分。实际上,如果需要,你可以列出多个接口,并& InterfaceName根
我正在使用SpringBoot和JPA。 在我的实体中,我有一个映射为枚举的状态字段。我想将e特定枚举值映射为null。