Java基础__枚举


 

枚举:编程中存在着几个固定的数据集,它们的数值比较稳定,且数值是有限的。

比如:一周的七天,开发案例中的交通灯等。。。

枚举的好处:使用枚举降低了程序出错的概率,提高代码可读性和维护性;


枚举的常用方法:values 遍历所有的枚举值  oridinal获取枚举值在枚举中的位置


/*请编写一个关于星期几的枚举WeekDay,要求:
•枚举值:MON,TUE,WED,THU,FRI,SAT,SUN 
•该枚举要有一个方法,调用该方法返回中文格式的星期*/
enum Test6 {
      MON("周一"),TUE("周二"),WED("周三"),THU("周四"),FRI("周五"),SAT("周六"),SUN("周日");
	private String localeString;
      private Test6(String localeString){
    	  this.localeString = localeString;
      }
      public String getLocaleString(){
    	  return localeString;
      }
}
System.out.println(Test6.WED.getLocaleString());



枚举的定义:

枚举定义需要使用关机字 enum;


枚举的使用:

1.常量

public enum color{

            RED, GREEN, BLANK, YELLOW

}

2.switch

switch只支持int,char,enum类型

package it.heima.com;

public enum Color {
 GREED,YELLOW,RED
}


package it.heima.com;

public class Light {
 Color c = Color.GREED;
 public void change(){
  switch(c){
  case RED:
   c = Color.GREED;
   break;
  case YELLOW:
   c = Color.RED;
   break;
  case GREED:
   c = Color.YELLOW;
   break;
  }
 }
}


3.向枚举中添加新方法      枚举的高级应用


package it.heima.com;

public enum Color {
 
 RED("红色",1),GREED("绿色",2),YELLOW("黄色",3);
 private String name;
 private int index;
 private Color(String name , int index){
  this.name = name;
  this.index = index;
 }
 public static String getName(int index){
  for(Color c : Color.values()){
   if(c.getIndex()== index){
    return c.getName();
   }
  }
  return null;
 }
 public String getName() {
  return name;
 }
 public void setName(String name) {
  this.name = name;
 }
 public int getIndex() {
  return index;
 }
 public void setIndex(int index) {
  this.index = index;
 }
}


4.覆盖枚举的方法


public enum Color {
 RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
 // 成员变量
 private String name;
 private int index;
 // 构造方法
 private Color(String name, int index) {
  this.name = name;
  this.index = index;
 }
 //覆盖方法
 @Override
 public String toString() {
  return this.index+"_"+this.name;
 }
}

5.实现接口 : 枚举实现接口 没有毛特殊的,一样的implements  一样的实现接口方法

6.使用接口组织枚举

public interface Food {
 enum Coffee implements Food{
  BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
 }
 enum Dessert implements Food{
  FRUIT, CAKE, GELATO
 }
}

7.Java中的枚举是一个对象,枚举对象中的各枚举项也是对象。在Java中,集合容器要求存储在其中的每一个成员均是对象类型,而枚举作为一种特殊的类,Java亦专门为枚举提供了集合容器EnumSet和EnumMap。

public enum Role{
 SYSADMIN,

    ROLEA,

    ROLEC;

}

 public static voidmain(String[] args)
    {
        EnumSet<Role> es= EnumSet.of(Role.ROLEA, Role.ROLEB);
        for(Role role: es)
        {
           System.out.println(role);
        }
    }


publicclass EnumMapExample

 {

     public static void main(String[] args)
     {
         EnumMap<Role, String> em = newEnumMap<Role, String>(Role.class);              
         em.put(Role.SYSADMIN, "系统管理员");
         em.put(Role.ROLEA, "角色A");                        
         System.out.println(em.size());
        System.out.println(em.get(Role.SYSADMIN)); 
     }
 }

 



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值