在核心Java中,抽象类java.lang.Enum
是所有Java枚举类型的基类。有一些常见的方法,如:
public final String name()
public final int ordinal()
public static <T extends Enum<T>> T valueOf(Class<T> enumType, String name)
但是,众所周知,还有一种经常使用的方法public static <T extends Enum<T>> T valueOf(String name)
,它根本没有出现在Java API文档中 - https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html。任何人都可以解释一下吗?
答案 0 :(得分:0)
如果在public static <T extends Enum<T>> T valueOf(String name)
上有这样的方法Enum
,由于type erasure,实现将无法知道要返回的具体类型。所以它必须在每个具体的子类上实现。
实际上,这是通过编译器生成的“魔术”来完成的。或者正如JLS所说,作为“隐式声明的方法”。