当前位置: 首页 > 知识库问答 >
问题:

JAVA中不同类型枚举的getCode

闾丘谦
2023-03-14

如何在enum中存储不同的类型并在不需要强制转换的情况下访问它们?

public enum PlugsEnum {

    LOCAL_DATE(LocalDate.of(9999,12,31)),
    
    CONTRACTORNAME("autoname");

    @Getter
    private final Object code;

    PlugsEnum(Object code) {
        this.code = code;
    }

}

LocalDate localDate = (LocalDate) PlugsEnum.LOCAL_DATE.getCode()

共有1个答案

杨学真
2023-03-14

您误解了枚举在Java中的作用。如Java语言规范中所述,枚举“定义了一小组命名的类实例”。所以枚举中命名的所有对象必须是相同类型的。该类型是声明它们的Enum子类。

如果您想按名称将各种对象关联在一起,请使用Java的其他功能。

您可以定义一个映射来跟踪键值对的集合。见甲骨文教程。

Map< String, LocalDate > contracts = new HashMap<>() ;
contracts.put( someContractorName , someHireDate ) ;
contracts.put( otherContractorName , otherHireDate ) ;

或者定义一个类来将这些部分连接在一起。如果类的主要目的是透明且不可变地传输数据,请将类定义为记录。

record Contract ( String contractorName , LocalDate whenHired ) {}
Contract pavement = new Contract ( "Acme Pavement Company" , LocalDate.of( 2023, Month.JANUARY , 23 ) ) ;
 类似资料:
  • 问题内容: 例如,我该怎么做: 结果示例: 问题答案: 迅捷4.2+ 从Swift 4.2(使用Xcode 10)开始,只需添加协议一致性即可从中受益。要添加此协议一致性,您只需要在某处写: 如果枚举是您自己的,则可以直接在声明中指定一致性: 然后,以下代码将打印所有可能的值: 与早期Swift版本(3.x和4.x)的兼容性 如果您需要支持Swift 3.x或4.0,则可以通过添加以下代码来模仿S

  • 问题内容: 我有一个枚举的类对象(我有一个),我需要获取此枚举表示的枚举值的列表。该静态函数有我需要什么,但我不知道怎么去从类对象访问它。 问题答案:

  • 枚举类型是Java SE5新增加的特性。使用enum关键字来定义枚举类型,如下面的代码所示: 如果在Java代码中使用枚举类型,可将枚举类型中的值当成常量来处理,也可以使用字符串来为枚举类型变量赋值,便必须使用Enum..valueOf方法将字符串转换成枚举类型。下面的代码演示了Java代码操作枚举类型变量的过程: <%! enum Seasons{SPRING, SUMMER, AUT

  • 枚举类(“新的枚举”/“强类型的枚举”)主要用来解决传统的C++枚举的三个问题: 传统C++枚举会被隐式转换为int,这在那些不应被转换为int的情况下可能导致错误 传统C++枚举的每一枚举值在其作用域范围内都是可见的,容易导致名称冲突(同名冲突) 不可以指定枚举的底层数据类型,这可能会导致代码不容易理解、兼容性问题以及不可以进行前向声明 枚举类(enum)(“强类型枚举”)是强类型的,并且具有类

  • 枚举类型(也可以称为“枚举器”)由一组具有独立标识符(名称)的整数类型常量构成,在 C# 中枚举类型不仅可以在类或结构体的内部声明,也可以在类或结构体的外部声明,默认情况下枚举类型中成员的默认值是从 0 开始的,然后逐一递增。 在 C# 中可以使用 enum 关键字来声明枚举类型,语法格式如下所示: enum enum_name{     enumeration list; } 其中,enum_n