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)
から来るのかということです。それは言語の機能、つまりコンパイラに組み込まれている機能ですか?