【发布时间】:2018-05-03 00:58:09
【问题描述】:
在核心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——。谁能解释一下?
【问题讨论】:
-
好吧,首先,类型擦除意味着这样的方法无法知道要返回什么类型。
-
@OliverCharlesworth 但是
Enum<T>> T valueOf(String name)确实可以正常工作 -
不是那种形式,而是非静态版本,委托给静态方法可能会有用。
-
这行得通,因为它是编译器生成的魔法。