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;@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", dsc='" + dsc + '\'' +'}';}Season(String name, String dsc) {this.name = name;this.dsc = dsc;}
}