枚举
来源:互联网 发布:专业的剪辑软件 编辑:程序博客网 时间:2024/06/02 02:01
- 枚举类的对象是有限个的。
- java1.5之前需要自定义枚举类,java1.5提供了声明枚举类的关键字enum。
自定义枚举类
如下所示自定义了一个枚举类week:
public class TestEnum{ public static void main(String[] args){ Week monday = Week.MONDAY; System.out.println("今天是" + monday.getName()); }}class Week { // 1. 提供类的属性,声明为 private final private final String name; // 2. 声明私有的构造器,并初始化final属性 private Week(String name){ this.name = name; } // 3. 提供调用属性的公共方法 public String getName() { return name; } // 4. 创建枚举类的对象,将类的对象声明为public static final public static final Week MONDAY = new Week("星期一"); public static final Week THESDAY = new Week("星期二"); public static final Week WEDNESDAY = new Week("星期三"); public static final Week THURSDAY = new Week("星期四"); public static final Week FRIDAY = new Week("星期五"); public static final Week SATURDAY = new Week("星期六"); public static final Week SUNDAY = new Week("星期日"); @Override public String toString() { return "Week{" + "name='" + name + '\'' + '}'; }}
使用enum关键字
使用enum定义枚举类可以省略实例对象前面的修饰符(类似接口一样默认所有成员变量都是常量)。
public class TestEnum{ public static void main(String[] args){ // values()方法:以一个数组的形式将枚举类的对象返回; Week[] weeks = Week.values(); for(int i = 0; i < weeks.length; i++){ System.out.println(weeks[i]); } // valueOf(String name)方法:要求传入的形参name是枚举类对象的名字,否则会报java.lang.IllegalArgumentException Week monday = Week.valueOf("MONDAY"); }}enum Week { MONDAY("星期一"), THESDAY("星期二"), WEDNESDAY("星期三"), THURSDAY("星期四"), FRIDAY("星期五"), SATURDAY("星期六"), SUNDAY("星期日"); // 1. 提供类的属性,声明为 private final private final String name; // 2. 声明私有的构造器,并初始化final属性 private Week(String name){ this.name = name; } // 3. 提供调用属性的公共方法 public String getName() { return name; } @Override public String toString() { return "Week{" + "name='" + name + '\'' + '}'; }}
枚举类实现接口
可以让不同的枚举类的对象调用不同的重写方法。
public class TestEnum{ public static void main(String[] args){ Week[] weeks = Week.values(); for(int i = 0; i < weeks.length; i++){ weeks[i].say(); } }}interface Say{ void say();}enum Week implements Say { MONDAY("星期一"){ @Override public void say() { System.out.println("又到了痛苦的周一。"); } }, THESDAY("星期二"){ @Override public void say() { System.out.println("怎么才周二。"); } }, WEDNESDAY("星期三"){ @Override public void say() { System.out.println("还得在坚持3天。"); } }, THURSDAY("星期四"){ @Override public void say() { System.out.println("胜利在望。"); } }, FRIDAY("星期五"){ @Override public void say() { System.out.println("为什么今天心情特别好。"); } }, SATURDAY("星期六"){ @Override public void say() { System.out.println("懒洋洋的睡个美觉,我是宅男。"); } }, SUNDAY("星期日"){ @Override public void say() { System.out.println("一到周日,焦虑、恐慌。"); } }; // 1. 提供类的属性,声明为 private final private final String name; // 2. 声明私有的构造器,并初始化final属性 private Week(String name){ this.name = name; } // 3. 提供调用属性的公共方法 public String getName() { return name; } @Override public String toString() { return "Week{" + "name='" + name + '\'' + '}'; }}
常用的简单的枚举类定义
一般比较常用的枚举对象是不需要定义对象属性的,这样只需如下简单的定义即可:
enum Size{ SAMALL, MEDIUM, LARGE;}
0 0
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 枚举
- 119.Oracle数据库SQL开发之 PLSQL编程——函数
- 第二类斯特林(Stirling)数的简单介绍和计算(小球入盒)
- Longest Palindromic Substring
- C++类型转换
- TLD视觉跟踪算法
- 枚举
- 必须声明元素类型 "typeAliases"
- Java多线程两种实现
- 120.Oracle数据库SQL开发之 PLSQL编程——包
- Spring4快速入门第四章注解装配bean属性
- 2013 蓝桥杯 连号区间数 (29`)
- Oracle数据库基础
- faac在iOS下编译为arm7, arm7s, arm64的方法
- 【LeetCode从零单刷】Kth Largest Element in an Array