枚举和注解
枚举类
创建Season对象有如下特点
- 季节的值是有限的几个值(spring , summer , fall , winter)
- 只读, 不需要修改
引出枚举类
自定义枚举类
class Season{
private String name;
private String desc;//描述
//1.将构造器私有化, 目的防止 直接new
//2.去掉setXxx方法, 防止属性被修改
//3.在Season内部, 直接创建固定的对象
//4.对外暴露对象(通过为对象添加public final static修饰符)
//定义四个固定的对象
public static Season SPRING = new Season("春天","温暖");
public static Season WINTER = new Season("冬天","寒冷");
public static Season FALL = new Season("秋天","凉爽");
public static Season SUMMER = new Season("夏天","炎热");
}
//通常对枚举对象/属性使用final + static共同修饰,实现底层优化
- 枚举对象名通常使用全部大写
- 枚举对象根据需要, 可以有多个属性
enum关键字
enum Season{
//1.使用关键 enum 替代 class
//2. public static Season SPRING = new Season("春天","温暖"); 直接使用 SPRING("春天","温暖");
//常量名(实参列表)
//3.如果有多个常量(对象), 使用 , 号间隔即可
//4.如果使用enum来实现枚举, 要求将定义的常量对象,写在最前面
SPRING("春天","温暖"), WINTER("冬天","寒冷");
private String name;
private String desc;//描述
}
enum类常用方法
enum细节
使用enum关键字开放一个枚举类时, 默认会继承Enum类, 而且是一个final类 (使用javap 可以证明)
如果使用无参构造器 创建 枚举对象, 则实参列表和小括号都可以省略’
枚举对象必须放在枚举类的首行
使用enum关键字后, 就不能再继承其他类了, 因为enum会隐式继承Enum, 而Java是单继承机制
枚举类和普通类一样, 可以实现接口
enum 类名 implements 接口1, 接口2{}
foreach语句 - for循环补充
foreach执行流程是 : 依次从nums数组中取出数据, 赋给i, 如果取出完毕, 则退出for