该方法是隐式定义的(即由编译器生成)。从JLS:此外,如果E是enum类型的名称,则该类型具有以下隐式声明的static方法:/*** Returns an array containing the constants of this enum * type, in the order they're declared. This method may be* used to iterate over the constants as follows:** for(E c : E.values())* System.out.println(c);** @return an array containing the constants of this enum * type, in the order they're declared*/public static E[] values();/*** Returns the enum constant of this type with the specified* name.* The string must match exactly an identifier used to declare* an enum constant in this type. (Extraneous whitespace * characters are not permitted.)* * @return the enum constant with the specified name* @throws IllegalArgumentException if this enum type has no* constant with the specified name*/public static E valueOf(String name);