我认为它不会像这样工作,除非你可以访问类型变量(通过类型或方法签名)。问题是Enum.valueOf的方法签名:
public static > T valueOf(
Class enumType,
String name
);
没有办法得到没有类型变量的T。但是如果您愿意抑制某些编译器警告,您可以这样做:
public enum King{
ELVIS
}
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void main(final String[] args){
final Class extends Enum> enumType = King.class;
final Enum> theOneAndOnly = Enum.valueOf(enumType, "ELVIS");
System.out.println(theOneAndOnly.name());
}
输出:
ELVIS