java枚举

package frank;
import java.lang.*;

public class App
{
	public static void main(String[] args)
	{
		App a = new App();
		a.println(AppEnum.SPRING);
		System.out.println(AppEnum.SUMMER.ordinal());
		a.println(AppEnum.valueOf(AppEnum.class,"SUMMER"));
		for(AppEnum item : AppEnum.values())//遍历枚举
		{
			System.out.println(item);
		}
		AppEnum ae = AppEnum.valueOf(AppEnum.class,"SPRING");
		ae.setName("男");
		AppEnum at = AppEnum.SPRING;//自动调用相应常量的构造方法
		System.out.println(AppEnum.SPRING.getName());
		AppEnum.SPRING.get();//调用枚举里面对应实例的方法
	}
	public void println(AppEnum ae)
	{
		switch(ae)
		{
			case SPRING:
			{
				System.out.println("春天");
			}
			break;
			case SUMMER:
			{
				System.out.println("夏天");
			}
			break;
			default:
			{
				System.out.println("火星来的!");
			}
			break;
		}
	}
}
/**
枚举的练习,枚举是特殊的类,如果用public修饰那么枚举名必须跟类名一样。
枚举里面的实例默认都是public static final修饰的,自己不能添加。
*/
enum AppEnum
{
	SPRING("男")//定义一个构造方法
	{
		public void get()
		{
			System.out.println("娜娜");
		}
	},
	SUMMER("女")
	{
		public void get()
		{
			System.out.println("娜娜2");
		}
	},
	FALL("人妖")
	{
		public void get()
		{
			System.out.println("娜娜3");
		}
	},
	WINTER("未知")
	{
		public void get()
		{
			System.out.println("娜娜4");
		}
	};
	private String name;//枚举里面定义一个变量
	public void setName(String name)//定义一个方法
	{
		switch(this)
		{
			case SPRING:
			if(name.equals("男"))
			{
				this.name = name;
			}
			else
			{
				System.out.println("参数填写错误!");
			}
			break;
			case SUMMER:
			if(name.equals("女"))
			{
				this.name = name;
			}
			else
			{
				System.out.println("参数填写错误!");
			}
			break;
			default:
			
			break;
		}
	}
	public String getName()
	{
		return this.name;
	}
	private AppEnum(String name)//只能指定为private
	{
		this.name = name;
	}
	public abstract void get();//定义一个抽象方法,然后让每个常量去实现
}

  java里面枚举可以继承一个或多个接口,里面可以定义字段、方法、构造方法(只能是private的,默认也是私有的)、也可以定义抽象方法。

posted on 2013-09-11 16:44  wp456  阅读(206)  评论(0)    收藏  举报

导航