源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

java中枚举的详细使用介绍

  • 时间:2021-08-15 18:06 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:java中枚举的详细使用介绍
[b]枚举特点[/b] 1.用enum定义枚举类默认继承了java.lang.Enum类而不是继承了Object类。其中java.lang.Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口 2.枚举类的构造函数只能使用private访问修饰符,如果省略了其构造器的访问控制符,则默认使用private修饰; 3.枚举类的所有实例必须在枚举类中显式列出,否则这个枚举类将永远都不能产生实例。列出这些实例时,系统会自动添加public static final修饰,无需程序员显式添加。
[u]复制代码[/u] 代码如下:
public enum Week {     MON{         public String toLocaleString(){             return "星期一";         }     },TUES{         public String toLocaleString(){             return "星期二";         }     },WEB{         public String toLocaleString(){             return "星期三";         }     },THUR{         public String toLocaleString(){             return "星期四";         }     },FRI{         public String toLocaleString(){             return "星期五";         }     },SAT{         public String toLocaleString(){             return "星期六";         }     },SUN{         public String toLocaleString(){             return "星期日";         }     };     public abstract String toLocaleString(); }
[b]枚举的遍历 [/b]
[u]复制代码[/u] 代码如下:
public class EnumTest {     public static void main(String[] args){         for(Week w:Week.values()){             System.out.println(w);         }     } }
[b]枚举的常用方法[/b] int compareTo方法 String name()返回枚举实例的名称 int ordinal() 返回枚举值在枚举中的索引 String toString()返回枚举的实例名称 比name更常用 public static valueOf()
[u]复制代码[/u] 代码如下:
public class EnumTest {     public static void main(String[] args){         Week day =Week.FRI;         System.out.println(day);//FRI         System.out.println(day.name());//FRI         System.out.println(day.ordinal());//4         System.out.println(Week.valueOf("SUN").toLocaleString());//星期日         System.out.println(Week.values().length);//7  获取枚举长度     } }
[b]枚举的构造函数 [/b]
[u]复制代码[/u] 代码如下:
public enum Gender {     MALE("男"),FEMALE("女");     private String name;     private Gender(String name){         this.name =name;     }     public String getName(){         return this.name;     }     public String toString(){         String name = null;         switch(this){         case MALE:             name="男";             break;         case FEMALE:             name="女";             break;         }         return name;     } }
[b]枚举的综合应用示例:交通灯[/b] [img]http://files.jb51.net/file_images/article/201304/201304270921482.png[/img]
[u]复制代码[/u] 代码如下:
public enum Lamp {      /*每个枚举元素各表示一个方向的控制灯*/         S2N("N2S","S2W",false),S2W("N2E","E2W",false),E2W("W2E","E2S",false),E2S("W2N","S2N",false),      /*下面元素表示与上面的元素的相反方向的灯,它们的“相反方向灯”和“下一个灯”应忽略不计!*/      N2S(null,null,false),N2E(null,null,false),W2E(null,null,false),W2N(null,null,false),      /*由南向东和由西向北等右拐弯的灯不受红绿灯的控制,所以,可以假想它们总是绿灯*/      S2E(null,null,true),E2N(null,null,true),N2W(null,null,true),W2S(null,null,true);      private Lamp(String opposite,String next,boolean lighted){          this.opposite = opposite;          this.next = next;          this.lighted = lighted;      }        /*当前灯是否为绿*/         private boolean lighted;      /*与当前灯同时为绿的对应方向*/         private String opposite;      /*当前灯变红时下一个变绿的灯*/         private String next;      public boolean isLighted(){          return lighted;      }      /**       * 某个灯变绿时,它对应方向的灯也要变绿       */         public void light(){          this.lighted = true;          if(opposite != null){              Lamp.valueOf(opposite).light();          }          System.out.println(name() + " lamp is green,下面总共应该有6个方向能看到汽车穿过!");      }      /**       * 某个灯变红时,对应方向的灯也要变红,并且下一个方向的灯要变绿       * @return 下一个要变绿的灯       */         public Lamp blackOut(){          this.lighted = false;          if(opposite != null){              Lamp.valueOf(opposite).blackOut();          }                 Lamp nextLamp= null;          if(next != null){              nextLamp = Lamp.valueOf(next);              System.out.println("绿灯从" + name() + "-------->切换为" + next);                         nextLamp.light();          }          return nextLamp;      }  }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部