枚举
-
什么时枚举?
在java语言中,枚举是一种数据类型,枚举用来表示固定的且仅有几种取值范围的数据
比如:性别
-
枚举有啥用?
当程序中有数据是固定且只有几种取值范围的时候,使用枚举类型强制设置值的范围
示例:
public interface Gender{ public static final String Boy = "男"; public static final String Girl = "女"; } public class Person{ private String name; private String sex; public Person(String name, String sex){ this.name = name; this.sex = sex; } } //当我们创建一个Person对象并为它赋值相应的属性时会出现 Person per = new Person("坤坤", "又男又女");
显然这样写(为per赋值属性)是不太符合我们的常理的,但是程序不会帮我们纠正此错误,而是会正常运行。那我们如何解决此问题嘞,请接着看吧。
-
枚举怎么使用?
public enum 枚举的名字{ 固定选项值1,固定选项值2,...固定选项值n; }
基于上示例,我们来看看如何解决刚才出现的问题:
public enum Gender{ Boy, Girl; } public class Person{ private String name; private Gender sex;//使用枚举类型 public Person(String name, String sex){ this.name = name; this.sex = sex; } } //创建Person对象并为其相应属性赋值 Person per = new Person("坤坤", "又男又女");//此时程序报错,原因就是我们使用了枚举类型,限制了性别类型必须是Gender枚举 Person per1 = new Person("坤坤", Gender.Boy);//此时程序正确
由此我们看出,枚举可以保障数据的合法有效性。
-
我们可以结合switch和枚举来实现一个小案例,加深对枚举的使用印象
案例:交通信号灯又固定的三种颜色:红、绿、黄。判断灯的颜色,输出灯的颜色。
-
信号灯枚举
public enum Signal { //取值范围 RED, GREEN, YELLOW; }
-
设置Test类测试
public class Test { public static void change(Signal signal){ switch (signal){ case RED: System.out.println("此时是红灯"); break; case GREEN: System.out.println("此时是绿灯"); break; case YELLOW: System.out.println("此时是黄灯"); break; } } public static void main(String[] args) { change(Signal.RED); } }
-