В Java SE 7 (и, скорее всего, в предыдущих версиях) класс Enum объявляется следующим образом:
public abstract class Enum<E extends Enum<E>>
extends Object
implements Comparable<E>, Serializable
Класс Enum имеет статический метод с этой сигнатурой:
T static<T extends Enum<T>> valueOf(Class<T> enumType, String name)
Но нет статического метода: valueOf(String)
, определенного в классе Enum, и не вверх в иерархии, к которой принадлежит Enum.
Вопрос в том, откуда берется valueOf(String)
?
Является ли это признаком языка, то есть функцией, встроенной в компилятор?