黑马程序员Java类之枚举(Enum)

原创 2012年03月28日 16:28:45

---------------------- android培训java培训、期待与您交流! ----------------------

 基础要点

1、枚举就相当于一个类,其中也可以定义构造方法、成员变量、普通方法和抽象方法

2、枚举元素必须位于枚举体中最开是的部分,枚举元素列表的后要有“;”与其他成员分隔。若把枚举中的变量或方法放在枚举元素前,编译器会报错。

3、如果枚举只有一个成员时,就可以作为一种单列的实现方式

例如视频中所讲的交通灯

package horse;
/**这是一个枚举类,是从交通灯视频里拆下来的内容
 */
public enum Light {
	//定义了三种颜色的灯:红黄绿,灯后括号里内容为等待的时间
	//若无括号也可以但就没有时间了
	RED(30){
		public Light getNext(){
			System.out.println("red");
			return GREEN;
		}
	},
	GREEN(35){
		public Light getNext(){
			System.out.println("green");
			return YELLOW;
		}
	},
	YELLOW(5){
		public Light getNext(){
			System.out.println("yellow");
			return RED;
		}
	};
	//定义等待的时间
	private int time;
	private Light(int time){
		this.time = time;
	}
	public abstract Light getNext();
}

在写是个枚举的时候我将等待的时间和成员方法放在了枚举前,编译器果然报错了

下面做一个类用于显示灯的效果

package horse;
/**创建一个函数用于显示enum的效果
 * @param args
 */
public class LightTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Light.RED.getNext().getNext().getNext();
	}
}

下面在做一个与上面不同的

先定义一个星期枚举

package horse;
public enum Week {
	/*创建的枚举元素必须在第一行,
	 *这里元素可以无括号,上面的交通灯有主要是因为要设状态
	*/
	SUN,MON,TUE,WEN,THT,FRI,SAT;
	//枚举的构造方法必须为私有
	private Week(){
		System.out.println();
	}
	private Week(int day){
		System.out.println();
	}
}

下面是实现形式

package horse;
public class WeekTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Week weekDay = Week.FRI;
		System.out.println(weekDay);
		//返回枚举常量的名称
		System.out.println(weekDay.name());
		System.out.println(Week.valueOf("SUN"));
		//创建枚举的一个数组用于输出这七个星期
		Week[] ws = Week.values();
		for(Week w : ws){
			System.out.println(w);
		}
	}
}

 ---------------------- android培训java培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima

内部类 枚举(enum)基本属性和使用详解

☆☆☆内部类和枚举的使用解析 枚举创建于调用一、内部类概念:一个类中又定 义了一个完整的类结构。被包含的类 称为 内部类 类体中包含其他类的类 称为 外部类其他的类 称为 外部其他类 1、分类(一...
  • lxf512666
  • lxf512666
  • 2016年10月11日 23:33
  • 4615

重新认识java(十) ---- Enum(枚举类)

有的人说,不推荐使用枚举。有的人说,枚举很好用。究竟怎么使用,如何使用,仁者见仁智者见智。总之,先学会再说~...
  • qq_31655965
  • qq_31655965
  • 2017年02月13日 15:06
  • 11405

Java中继承java.lang.Enum

Java 5新增的enum关键词,可以定义枚举类。该类是一个特殊的类,可以定义自己的field、方法、可以实现接口,也可以定义自己的构造器。但枚举类使用enum定义后在编译后默认继承了java.lan...
  • u010430304
  • u010430304
  • 2017年01月15日 11:43
  • 1273

Java enum枚举类型工具类的用法详解

Java enum工具类的用法详解
  • caodongfang126
  • caodongfang126
  • 2016年10月10日 16:21
  • 2432

java枚举类型和java类的区别

java中枚举都继承自java.lang.Enum类,所以枚举类不能继承别的类,但是可以实现接口。这里我们定义一个WeekInterface接口: public interface WeekInter...
  • Fabuler
  • Fabuler
  • 2014年01月23日 11:00
  • 1778

Java 的枚举(Enums) 可以实现接口(Interfaces)

Java 中一个典型的枚举类型,看似字符串值,但包含一些附加的信息,包括排序以及附加的方法可以获取枚举值的信息。 下面是一个基本的枚举类型: ? 1 public en...
  • whl825
  • whl825
  • 2017年01月17日 14:23
  • 1860

java基础总结 --- enum枚举实现多路分发 石头、剪刀、布游戏示例

多路分发: 当你处理多种交互类型时,程序可能会变得相当杂乱。举例来说,如果一个系统要分析 和执行数学表达式。我们可能会声明Number.plus(Number)、Number.mulitple(Num...
  • zghwaicsdn
  • zghwaicsdn
  • 2016年02月11日 21:03
  • 1342

Java 枚举 String-String

package cn.bycs.online.dealer.vo; /** * @author jiangxingqi * */ public enum NewcarOperationEnum...
  • jxq0816
  • jxq0816
  • 2015年11月14日 15:33
  • 1364

Enum枚举类|注解Annotation

Enum枚举类 ①枚举类和普通类的区别: 使用 enum 定义的枚举类默认继承了 java.lang.Enum 类 枚举类的构造器只能使用 private 访问控制符 枚举类的所有实例必须在枚...
  • wzg775192833
  • wzg775192833
  • 2014年10月09日 13:37
  • 2409

Java中Enum类型的序列化及类升级不建议用枚举的原因

在Java中,对Enum类型的序列化与其他对象类型的序列化有所不同,今天就来看看到底有什么不同。下面先来看下在Java中,我们定义的Enum在被编译之后是长成什么样子的。  Java代码:  ...
  • hupoling
  • hupoling
  • 2017年07月11日 18:03
  • 1787
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员Java类之枚举(Enum)
举报原因:
原因补充:

(最多只允许输入30个字)