public enum colors{
Green,
YELLOW,
RED,
ERROR;
public static colors[] values(){
/*
Returns an array containing the constants of this enum type, in the order they are declared.
*/
colors[] c = {GREEN,YELLOW,RED,ERROR};
return c;
}
}
得到错误:values()已经以颜色定义
问题来源:Stack Overflow
该方法是由编译器隐式定义的,因此,如果尝试再次将此方法声明到枚举中,则会出现编译错误,例如 "The enum .colors already defines the method values() implicitly"
您可以在这里查看文档,网址为https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.9.2
请注意以上文档中的这一行,
“因此,枚举类型声明不能包含与枚举常量冲突的字段,也不能包含与自动生成的方法(values()和valueOf(String))或覆盖Enum中的最终方法(equals( Object),hashCode(),clone(),compareTo(Object),name(),ordinal()和getDeclaringClass())。”
在这里,E是枚举类型的名称,然后该类型具有以下隐式声明的静态方法。
/**
* 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();
因此,您无需再次声明它,而只需调用即可获取数组colors.values()。
有关示例,请参考以下简单代码段:
public class Test {
public static void main(String[] args) {
colors[] values = colors.values();
System.out.println(Arrays.toString(values));
}
public enum colors {
Green,
YELLOW,
RED,
ERROR;
}
}
输出:
[Green, YELLOW, RED, ERROR]
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。