前言
如果要定义一个color类保存三原色的对象(红red,绿green,蓝blue),应该怎样定义?会有什么问题?
先自己思考该怎么定义?思考完成看和我写的有什么不同
public class Color {
private int id;
private String name;
public static final Color c1=new Color(101,"红色");
public static final Color c2=new Color(102,"绿色");
public static final Color c3=new Color(103,"蓝色");
private Color(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
既然是对象应该有唯一标识id,还有其对应的名称。
颜色类是固定使用的且三原色不可能改变,id和name不能随意的改变。
为了方便使用且三原色是大家认为的统一概念,应该是创建对象的时候就有三原色
如果有很多个这样的类,编写这个类会非常的麻烦,那么有没有一个类似于类的容器来方便我们编写
我们通过类定义一个新类型,当我们希望类的对象固定下来,我们需要做繁琐的操作
在java1.5之后,推出枚举,枚举可以简单的实现这一功能
使用
1.将class变为enum
2.在pojo对象中是变量的写法,直接写对应的固定的名字全大写+类的构造方法,创建多个使用","隔开,“;”结束
代码测试
在刚刚编写的Color使用枚举
public enum Color {
RED(101,"红色"),GREEN(102,"绿色"),BLUE(102,"蓝色");
private int id;
private String name;
private Color(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
}
测试
System.out.println(Color.RED.getId()+Color.RED.getName());
结果
101红色
Process finished with exit code 0
我们能否实例化枚举?
测试
创建之后出现报错信息,无法实例化
那我们能否改变已有的三个对象的值?
显然是不能的,id和name都是由private修饰的,而且没有set方法