欢迎光临,了解微信小程序开发,就上易用通!

【后端】java基础(5.6)java高级基础之枚举

发布:2018-01-24 15:39浏览: 来源:网络 作者:tianshu

java中除了类和接口,还有一个类型叫做枚举(enum),它出现得比较晚,在JDk1.5之后才出,因此对我们来说并不常用,但是它的作用还是不小。
创建的时候前面和创建类、接口一样,在new之后,我们选择enum即可。表面上枚举和类,接口的区别是它是用enum修饰的,在图标上是个黄色的E。
【后端】java基础(5.6)java高级基础之枚举(图1)
至于内部上的区别,我个人认为枚举主要是将基本类型和值的限制进行了一个封装。枚举,根据字面的意思就是一一举例,那么我觉得就是可以封装进去一些已知所有结果的值。我们可以将它用作常量的封装。
首先我们来定义一个枚举,将周一到周日封装进去:


  1. public enum Week {
  2. MON,TUE,WED,THU,FRI,SAT,SUN
  3. }

如果我们要使用它的,直接调用即可,比如说我想调用星期一:


  1. public class Test {
  2. public static void main(String[] args) {
  3. Week week = Week.MON;
  4. System.out.println(week);
  5. }
  6. }

然后,我们还可以直接用在switch里面:


  1. public static void main(String[] args) {
  2. Week week = Week.MON;
  3.  
  4. switch (week) {
  5. case MON:
  6.  
  7. break;
  8. case TUE:
  9.  
  10. break;
  11. case WED:
  12.  
  13. break;
  14. case THU:
  15.  
  16. break;
  17. case FRI:
  18.  
  19. break;
  20. case SAT:
  21.  
  22. break;
  23. case SUN:
  24.  
  25. break;
  26.  
  27. default:
  28. break;
  29. }
  30. }

当然我们也可以用for each遍历枚举:


  1. public static void main(String[] args) {
  2. Week week = Week.MON;
  3. for (Week w : week.values()) {
  4. System.out.println(w);
  5. }
  6. }

讲了这么多,有童鞋可能会问了,那我直接在外面写七个String类型的变量就可以了,干嘛非要用什么枚举,还这么麻烦?

  • 我们的java代码提倡 高内聚,低耦合的设计理念,通俗来讲,就是一段代码,能封装就封装,能复用就复用,尽量不要让同样的一段逻辑在程序中出现多次。比如这个星期,我们可能在这个类里面要用到,也可能要在别的类里面用到,那么我们只需要写一个枚举,这样在别的类用的时候也是如此调用就好了。这样做的好处是,如果哪一天,我们要改什么需求,只需要在枚举里面改一下就好了,如果程序没有符合这个理念,不仅改起来非常麻烦,还容易出错。

接下来讲讲稍微高级点的玩法:


  1. public enum Week {
  2. MON("星期一"),TUE("星期二"),WED("星期三"),THU("星期四"),FRI("星期五"),SAT("星期六"),SUN("星期日");
  3.  
  4. private String week;
  5.  
  6. private Week(String week){
  7. this.week = week;
  8. }
  9.  
  10. public String getWeek() {
  11. return week;
  12. }
  13. }

  1. public class Test {
  2. public static void main(String[] args) {
  3. Week week = Week.MON;
  4. for (Week w : week.values()) {
  5. System.out.println(w.getWeek());
  6. }
  7. }
  8. }

如果我们加入有参构造函数还有getter方法,加入一个值起名叫做week,便可以获取这个值里面的实际内容,运行,再运行结果就是:
【后端】java基础(5.6)java高级基础之枚举(图2)

除了加一个,我们还可以加多个,比如给每个星期的值加上一个下标:


  1. public enum Week {
  2. MON("星期一",0),TUE("星期二",1),WED("星期三",2),THU("星期四",3),FRI("星期五",4),SAT("星期六",5),SUN("星期日",6);
  3.  
  4. private String week;
  5. private int index;
  6.  
  7. private Week(String week, int index){
  8. this.week = week;
  9. this.index = index;
  10. }
  11.  
  12. public String getWeek() {
  13. return week;
  14. }
  15.  
  16. public int getIndex(){
  17. return index;
  18. }
  19. }

当然,我们也可以加入setter方法,这个函数可以用来修改枚举里面的内容,比如我们用getter方法拿到index为0的参数,我们把再用setter方法讲将此参数内的weeb值修改,这个有兴趣的话可以自己试验一下。 枚举还有更多用法,比如可以继承类还有实现接口,有兴趣可以自己查查,在这不做重点。





免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。