Java 枚举类整理

<span style="font-size: 18px; font-family: Arial; background-color: rgb(255, 255, 255);">1.枚举类的构造方法是用private修饰的。枚举类的所有实例必须在类的第一行列出,否则这个枚举类不会产生对象。</span>

而且这些实例都是public static void.
每个枚举类都有一个values方法,该方法可以遍历枚举类的所有实例


<span style="font-family: Arial;">public class Test {</span>	
	
	public static void tell(Season s)
	{
		switch(s)
		{
		case Spring:
			System.out.println(s+"春天");
			break;
		case Summer:System.out.println(s+"夏天");
			break;
		case Fall:System.out.println(s+"秋天");
			break;
		case Winter:System.out.println(s+"冬天");
			break;
		}
		
	}
	
	public static void main(String[] args) {
		
		for(Season s:Season.values())
		{
			System.out.println(s);
		}
		tell(Season.Fall);

	}

}

enum Season
{
	Spring,Summer,Fall,Winter;
}


2.枚举类的构造方法和对象

枚举类的构造方法是private,所以不能使用new创建对象

可以使用Enum.valueOf(Class c,String s);创建对象


public class Test {
	
	
	
		
	
	public static void main(String[] args) {
		
		Season s=Enum.valueOf(Season.class, "Summer");
		System.out.println(s);

	}

}

enum Season
{
	Spring,Summer,Fall,Winter;
}
一旦为枚举类定义了带参数的构造方法后,列举枚举类就必须对应的传入参数

public class Test {
	
	
	
		
	
	public static void main(String[] args) {
		
		Season s=Enum.valueOf(Season.class, "Summer");
		System.out.println(s.name);

	}

}

enum Season
{
	Spring("春天"),Summer("夏天"),Fall("秋天"),Winter("冬天");
	public String name;
	private Season(String name)
	{
		this.name=name;
	}
}

3.枚举类实现接口

与普通类一样,枚举类实现接口,则必须实现接口中所有的方法

ublic class Test {
	
	
	
		
	
	public static void main(String[] args) {
		
		Season s=Enum.valueOf(Season.class, "Summer");
		System.out.println(s.name);
		s.printInfo();

	}

}

enum Season implements Infomation
{
	Spring("春天"),Summer("夏天"),Fall("秋天"),Winter("冬天");
	public String name;
	private Season(String name)
	{
		this.name=name;
	}
	@Override
	public void printInfo() {
		System.out.println(name);
		
	}
}
interface Infomation
{
	void printInfo();
}
也可以使用匿名内部类的方法为每一个枚举类对象实现接口
public class Test {
	
	
	
		
	
	public static void main(String[] args) {
		
		Season s=Enum.valueOf(Season.class, "Summer");
		System.out.println(s.name);
		s.printInfo();

	}

}

enum Season implements Infomation
{
	Spring("春天"){

		@Override
		public void printInfo() {
			// TODO Auto-generated method stub
			System.out.println("春天温暖");
			
		}
		
	},Summer("夏天")
	{

		@Override
		public void printInfo() {
			// TODO Auto-generated method stub
			System.out.println("夏天炎热");
		}
		
	},Fall("秋天")
	{

		@Override
		public void printInfo() {
			// TODO Auto-generated method stub
			System.out.println("秋天凉爽");
		}
		
	},Winter("冬天"){

		@Override
		public void printInfo() {
			// TODO Auto-generated method stub
			System.out.println("冬天寒冷");
		}
		
	};
	public String name;
	private Season(String name)
	{
		this.name=name;
	}
	
}
interface Infomation
{
	void printInfo();
}

4.包含抽象方法的枚举类

包含抽象方法枚举类,要实例化对象的话,就得让每个对象实现抽象方法

public class Test {
	
	
	
		
	
	public static void main(String[] args) {
		
		Season s=Enum.valueOf(Season.class, "Summer");
		System.out.println(s.name);
		s.printInfo();
		s.whatToDo();

	}

}

enum Season implements Infomation
{
	Spring("春天"){

		@Override
		public void printInfo() {
			// TODO Auto-generated method stub
			System.out.println("春天温暖");
			
		}

		@Override
		public void whatToDo() {
			// TODO Auto-generated method stub
			System.out.println("我去春游");
			
		}
		
	},Summer("夏天")
	{

		@Override
		public void printInfo() {
			// TODO Auto-generated method stub
			System.out.println("夏天炎热");
		}

		@Override
		public void whatToDo() {
			// TODO Auto-generated method stub
			System.out.println("我去游泳");
		}
		
	},Fall("秋天")
	{

		@Override
		public void printInfo() {
			// TODO Auto-generated method stub
			System.out.println("秋天凉爽");
		}

		@Override
		public void whatToDo() {
			// TODO Auto-generated method stub
			System.out.println("我去玩乒乓球");
		}
		
	},Winter("冬天"){

		@Override
		public void printInfo() {
			// TODO Auto-generated method stub
			System.out.println("冬天寒冷");
		}

		@Override
		public void whatToDo() {
			// TODO Auto-generated method stub
			System.out.println("我去赏雪观梅");
		}
		
	};
	public String name;
	private Season(String name)
	{
		this.name=name;
	}
	public abstract void whatToDo();
	
}
interface Infomation
{
	void printInfo();
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值