1、枚举是一组常量的集合。还可以看成包含有限特定的对象。
2、自定义枚举的步骤:
- 将构造器私有化private
- 将get方法拿掉
- 在类的内部直接创建固定的对象,比如:
- public static Season SPRING = new Season("春天","温暖");
- 使用:Season.SPRING,这个使用时最重要的
- 优化:public final static Season SPRING = new Season("春天","温暖");
3、final修饰的变量一般都是大写。
4、在本类创建对象
使用enumeration关键字实现枚举
1、使用关键字enum替代class。使用这个关键字后默认继承Enum类,因此枚举类不能在继承其他的类了。但是可以实现接口。
2、常量名(实参列表):SPRING("春天","温暖");直接和构造器匹配。有多个常量对象。中间用,号间隔。
eg:
//常量对象要写在最前面
SPRING("春天","温暖"),WINTER("冬天","冷");
private String name ;
private String desc;
//下面就是构造器
3、注意事项
- 使用enum关键字创建枚举类的时候,会默认继承Eunm类。
- 如果使用无参构造器,后面的括号可以不写。
- 枚举之间用,好分隔。
- 枚举对象放在行首。
- 枚举对象是静态性质的,所以我们可以知道要是赋值的话其实是一个地址。
4、常用的方法
增强for循环:
for (int i :nums){
sout("i = " + i);
}
//就是将数组中nums的值取出来赋值给i,知道取出最后一个i。
package enumeration;
public class eum01 {
public static void main(String[] args) {
//给他一个索引
Season spring = Season.SPRING;
//给他一个索引,觉得
System.out.println(spring.name());
System.out.println("次序 " + spring.ordinal());
System.out.println("######");
final Season[] values = Season.values();
//遍历枚举类中的信息
for(Season i :values){
System.out.println(i);
}
//增强for循环
final Season spring1 = Season.valueOf("SPRING");
System.out.println(Season.SPRING.compareTo(Season.SUMMER));
//Season.SPRING 换成上面的spring也是可以的,其实还是最底层的东西啊。
//做减法
}
}
enum Season{
SPRING("春天","我爱你春天"),SUMMER("夏天","夏天的风吹动");
private String name;
private String dsc;
@Override
public String toString() {
return "Season{" +
"name='" + name + '\'' +
", dsc='" + dsc + '\'' +
'}';
}
Season(String name, String dsc) {
this.name = name;
this.dsc = dsc;
}
}