枚举类

枚举

1、常规使用:

package org.pbccrc.org.pbccrc.enmu;

//this is the basic use for enum
public enum Color {
	RED,YELLOW,BLUE,GREEN,BLACK
}

测试用例:

public class EnumTestForBasic {
	public static void main(String[] args) {
		 Color cl =Color.BLUE;
		 System.out.println(cl.toString());
		 System.out.println(cl);
	}
}

2、1.7版本以后可以在switch中使用:

public class TestEnumSwitch {

	public static void main(String[] args) {
		Color clColor=Color.GREEN;
		switch (clColor) {
		case BLACK:
			System.out.println("this color is black!");
			break;
		case GREEN:
			System.out.println("this color is green!");
			break;
			
		default:
			System.out.println("this color is other color!");
			break;
		}
	}
}

3、给枚举类添加属性


public enum WeekDays {
	
	MONDAY(1,"星期一"),TUESDAY(2,"星期二"),WEDNESDAY(3,"星期三")
	,THURSDAY(4,"星期四")
	,FRIDAY(5,"星期五"),SATURDAY(6,"星期六"),
	SUNDAY(7,"星期日");
	private Integer code;
	private String desc;
	private  WeekDays(Integer num,String desc) {
		this.code=num;
		this.desc=desc;
	}
	public Integer getCode() {
		return code;
	}
	public void setCode(Integer code) {
		this.code = code;
	}
	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	
}

注意:给枚举类添加属性值,其中的枚举类是已经定义好了的实例以及构造函数中需要的属性值;构造函数是私有函数;

4、实现接口

所有的枚举类都继承自java.lang.Enum,因为java不支持多继承,因为枚举类不能继承其他类,但是可以实现接口:

public enum WeekDays implements  DescToday{
	
	MONDAY(1,"星期一"),TUESDAY(2,"星期二"),WEDNESDAY(3,"星期三")
	,THURSDAY(4,"星期四")
	,FRIDAY(5,"星期五"),SATURDAY(6,"星期六"),
	SUNDAY(7,"星期日");
	private Integer code;
	private String desc;
	private  WeekDays(Integer num,String desc) {
		this.code=num;
		this.desc=desc;
	}
	public Integer getCode() {
		return code;
	}
	public void setCode(Integer code) {
		this.code = code;
	}
	public String getDesc() {
		return desc;
	}
	public void setDesc(String desc) {
		this.desc = desc;
	}
	@Override
	public String getThisDay() {
		return this.desc;
	}
	
}

接口:

public interface DescToday {

	String getThisDay();
}

测试用例:

public class WeekDayTest {
	public static void main(String[] args) {
		System.out.println(WeekDays.FRIDAY.getThisDay());
	}
}

5、在接口中添加enum的实例

public interface DateDesc {

	enum weekDaysEnum implements DateDesc{
		MONDAY,TUESDAY,WEDNESDAY,THURSDAY
		,FRIDAY,SATURDAY,
		SUNDAY
	}
	enum monthDay implements DateDesc{
		    JANUARY,FEBRUARY, MARCH,APRIL,MAY,
		  JUNE,JULY, AUGUST,SEPTEMBER,OCTOBER
          ,NOVEMBER,DECEMBER
	}
	
}
public class DateTest {
	 public static void main(String[] args) {
		System.out.println(DateDesc.monthDay.APRIL);
	}
}

6、在enum中添加抽象方法;

public enum EnumAddAbatractClass {

	SPRING {
		@Override
		String descThisSeasons() {
			System.out.println("we have into spring");
			return "春花";
		}
	},SUMMER {
		@Override
		String descThisSeasons() {
			System.out.println("we have into summer");
			return "夏阳";
		}
	},AUTUMN {
		@Override
		String descThisSeasons() {
			System.out.println("we have into autumn");
			return "秋月";
		}
	},WINTER {
		@Override
		String descThisSeasons() {
			System.out.println("we have into winter");
			return "冬雪";
		}
	};
	
	abstract String descThisSeasons();
}
public class AddAbstractTest {
 public static void main(String[] args) {
	System.out.println(EnumAddAbatractClass.AUTUMN.descThisSeasons());
  }
}

总结:枚举类是enum的常量实例,实例中可以定义自己的属性,构造函数式private的,也可以实现接口;

7、枚举的两个类:EnumMap 和EnumSet

public class EnumSetTest {

	public static void main(String[] args) {
		//use already enum to create enumSet 
		EnumSet<WeekDays> set =EnumSet.allOf(WeekDays.class);
		for (WeekDays weekDays : set) {
			System.out.println(weekDays);
		}
		
		//create a empty set
		EnumSet<WeekDays> set2=EnumSet.noneOf(WeekDays.class);
		System.out.println(set2.size());
		set2.add(WeekDays.FRIDAY);
		System.out.println(set2);
		
		//create enumset that has only one element
		EnumSet< WeekDays> set3=EnumSet.of(WeekDays.SATURDAY);
		System.out.println(set3);
		
	}
}
public class EnumMapTest {
  public static void main(String[] args) {
	  EnumMap<WeekDays, Object> weekEnumMap= new EnumMap<WeekDays, Object>(WeekDays.class);
	  weekEnumMap.put(WeekDays.MONDAY, "1");
	  weekEnumMap.put(WeekDays.FRIDAY, "5");
	  
	  
	  EnumMap<WeekDays, Object> map2=new EnumMap<WeekDays, Object>(weekEnumMap);
	  System.out.println(map2);
	  
	  
	  Map mapsMap=new HashMap();
	  mapsMap.put(WeekDays.SATURDAY, "6");
	  EnumMap< WeekDays, Object> map3=new EnumMap<WeekDays, Object>(mapsMap);
	  System.out.println(map3);
	  
 }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值