枚举
import java.security.PublicKey;
import java.util.Arrays;
public enum ColorOne {
REA(1111,"红色"),
PINK(2222,"粉色"),
BLANK(3333,"黑色");
private Integer id;
private String name;
//应该是让最上层的数据进入到内存中
ColorOne(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//通过id遍历获取对应的名字
public static String getName(int id){
for (ColorOne c:ColorOne.values()) {
if (c.getId() == id){
return c.getName();
}
}
return "null";
}
//覆盖toString方法
@Override
public String toString() {
return this.id+"_"+this.name;
}
public static void main(String[] args) {
String s1 = ColorOne.BLANK.toString();//Color.toString 编译报错
System.out.println(s1);
System.out.println(Arrays.toString(ColorOne.values()));
String s = ColorOne.getName(3333);
System.out.println(s);
}
}
结果:
3333_黑色
[1111_红色, 2222_粉色, 3333_黑色]
黑色
这里我出现的一个错误:我用Integer类型直接==比较值,其实他们只能在byte范围之内(-128~127)才能这样比较,因为有缓存。
单属性枚举:
import javax.naming.Name;
public enum NewEnum {
FIRST("李格宇"),
TWICE("元钱"),
THIRD("小于");
private String name;
NewEnum(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static void main(String[] args) {
NewEnum first = NewEnum.FIRST;
System.out.println(first.getName());
}
}