java Enum valueOf有两个参数?

标签 java enums

为什么 valueOf有两个参数?

Java documentation for valueOf

public static <T extends Enum<T>> T valueOf​(Class<T> enumType, String name)

Parameters:

enumType - the Class object of the enum type from which to return a constant

name - the name of the constant to return

但我在网上看到的大多数例子都说:

enum WorkDays {
    MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY;
}

测试:

WorkDays day1 = WorkDays.valueOf("MONDAY");
System.out.println(day1); // >>>  MONDAY

这个方法好像只用了一个参数?

最佳答案

正如您在之前的评论中指出的那样,您发现文档中的文本令人困惑,并且由于您的个人资料表明您是新手程序员:

Enum 是您将声明的所有枚举的父类(super class)。 在您的示例中,WorkDays 可以看作是 Enum 类的一个特定案例。 valueOf() 静态方法文档是为此父 Enum 类编写的。 这意味着在您的情况下,它将被称为: Enum.valueOf(WorkDays.class, "MONDAY")

现在,由于您创建了自己的 Enum(即 WorkDays),因此不需要使用此静态父方法。您可以只使用您自己创建的枚举公开的方法。

WorkDays.valueOf("Monday")

这是“隐式声明”,意味着它会存在于您自己创建的每个枚举中。

关于java Enum valueOf有两个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55265192/

相关文章:

java - 循环读取用户输入的 double

java - Odds & Evens 数组实例化

c++ - 在 C++ 中遍历连续枚举值的最简单方法

python - 使用干净简洁的自动值语法创建 StringAutoEnum 类

java - 为什么接口(interface)中没有静态方法,而是静态字段和内部类? [Java 8 之前的版本]

java - 覆盖jar中的java类

c# - 如何在 Entity Framework 中使用 Fluent API 以一对多关系映射枚举?

C# 枚举 - 可能有双重 ID

dart - 如何覆盖 Dart 中枚举的toString方法

java - 如何使用 JPA 建模层次结构