public enum EFormSw {
OBJ_KEY_LIST("Object Keys", EObjKeyType.class),
OBJ_NOTE_LIST("Object Notes", EObjNoteType.class);
public final String label;
public final Class</*"E is an Enum"*/> enumType;
// Constructor...
EFormSw.OBJ_KEY_LIST.enumType.values().someThingElse().
您可以使enumtype
成为类<?扩展枚举<?>>
:
enum EFormSw {
OBJ_KEY_LIST("Object Keys", EObjKeyType.class),
OBJ_NOTE_LIST("Object Notes", EObjNoteType.class);
private final String label;
private final Class<? extends Enum<?>> enumType;
EFormSw(String label, Class<? extends Enum<?>> enumType) {
this.label = label;
this.enumType = enumType;
}
public String getLabel() {
return label;
}
public Class<? extends Enum<?>> getEnumType() {
return enumType;
}
}
在遍历eformsw
的值时,可以使用getEnumConstants
获取表示枚举类型的枚举值的enum<?>[]
,但是您不能对其做太多的工作,因为您不知道它是哪种确切的枚举类型:
for (EFormSw constant: EFormSw.values()) {
Enum<?>[] values = constant.getEnumType().getEnumConstants();
}
(您仍然可以对数组元素调用java.lang.enum
和java.lang.object
中声明的大多数方法,所以如果您只需要这些,就可以使用这些方法。)
如果您希望使用eObjKeyType
和eObjNotetype
之间共享的一些公共功能,可以将所有公共功能提取到它们都实现的公共接口中:
interface EObjType {
// ...
}
enum EObjKeyType implements EObjType {
// ...
}
enum EObjNoteType implements EObjType {
// ...
}
然后将enumtype
更改为:
private final Class<? extends EObjType > enumType;
现在您可以获得eObjType[]
。
枚举类(“新的枚举”/“强类型的枚举”)主要用来解决传统的C++枚举的三个问题: 传统C++枚举会被隐式转换为int,这在那些不应被转换为int的情况下可能导致错误 传统C++枚举的每一枚举值在其作用域范围内都是可见的,容易导致名称冲突(同名冲突) 不可以指定枚举的底层数据类型,这可能会导致代码不容易理解、兼容性问题以及不可以进行前向声明 枚举类(enum)(“强类型枚举”)是强类型的,并且具有类
问题内容: 基本上,我所做的是为州写一个枚举,我不仅希望能够像州一样访问它们,而且还希望访问它们的缩写以及它们是否是原始殖民地。 这似乎按我预期的那样工作。我可以 对于涉及枚举的特定情况,这是执行此操作的最佳方法,还是设置和格式化此枚举的更好方法?预先感谢所有人! 问题答案: 首先,枚举方法不应大写。它们是与其他方法一样的方法,具有相同的命名约定。 其次,您所做的并不是建立枚举的最佳方法。不要为每
例如,我如何做类似的事情: 结果示例:
问题内容: 例如,我该怎么做: 结果示例: 问题答案: 迅捷4.2+ 从Swift 4.2(使用Xcode 10)开始,只需添加协议一致性即可从中受益。要添加此协议一致性,您只需要在某处写: 如果枚举是您自己的,则可以直接在声明中指定一致性: 然后,以下代码将打印所有可能的值: 与早期Swift版本(3.x和4.x)的兼容性 如果您需要支持Swift 3.x或4.0,则可以通过添加以下代码来模仿S
我试图在Avro模式中创建Union字段,并用它发送相应的JSON消息,但要有一个字段-。 https://avro.apache.org/docs/1.8.2/spec.html#工会 具有相应JSON数据的最简单联合类型(avro模式)的示例是什么?(尝试制作不含NULL/空数据的示例和含NULL/空数据的示例)。
枚举类型(也可以称为“枚举器”)由一组具有独立标识符(名称)的整数类型常量构成,在 C# 中枚举类型不仅可以在类或结构体的内部声明,也可以在类或结构体的外部声明,默认情况下枚举类型中成员的默认值是从 0 开始的,然后逐一递增。 在 C# 中可以使用 enum 关键字来声明枚举类型,语法格式如下所示: enum enum_name{ enumeration list; } 其中,enum_n