黑马程序员——JAVA笔记——枚举enum

原创 2015年07月08日 10:25:36

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

枚举类型是JDK5.0的新特征。Sun引进了一个全新的关键字enum来定义一个枚举类。


下面来看下枚举类的原理,用普通类实现枚举。

class Demo1
{
	public static void main(String[] args)
	{
		WeekDay day=WeekDay.MON;
		System.out.println(day.toString());
		day=day.nextDay();
		System.out.println(day.toString());
	}
}

abstract class WeekDay{
	private WeekDay(){};
	public static final WeekDay SUN=new WeekDay(){

		@Override
		public WeekDay nextDay() {
			// TODO Auto-generated method stub
			return MON;
		}
		
	};
	public static final WeekDay MON=new WeekDay(){

		@Override
		public WeekDay nextDay() {
			// TODO Auto-generated method stub
			return SUN;
		}};
	public abstract WeekDay nextDay();
	
	public String toString(){
		return this==MON?"MON":"SUN";
	}
}


枚举类的实现和常用方法:

枚举类中的构造方法必须为私有。
name():获取枚举常量的名称。

ordinal():获取枚举类中的顺序编号。

toString():返回枚举常量的名称。

valueOf():静态方法。返回带指定名称的枚举常量。

values():静态方法。返回一个包含全部枚举值的数组。

import java.util.Arrays;

public class Demo1
{
	public static void main(String[] args)
	{
		WeekDay day=WeekDay.SAT;
		System.out.println(day);
		System.out.println(day.name());
		System.out.println(day.ordinal());
		System.out.println(WeekDay.valueOf("FRI"));
		System.out.println(Arrays.asList(WeekDay.values()));
	}
	
	public enum WeekDay{
		//必须写在其他成员前面。
		SUN(0),MON(),THE,WED,THI,FRI,SAT;
		//构造方法必须为私有private
		private WeekDay(){
			System.out.println("first");
		}
		private WeekDay(int num){
			System.out.println("second");
		} 
	}
}


枚举类中实现抽象方法

	public enum TrafficLamp{
		RED(30){
			public TrafficLamp nextLamp(){
				return GREEN;
			}
		},GREEN(30){
			public TrafficLamp nextLamp(){
				return YELLOW;
			}
		},YELLOW(5){
			public TrafficLamp nextLamp(){
				return RED;
			}
		};
		
		public abstract TrafficLamp nextLamp();
		private int time;
		private TrafficLamp(int time){
			this.time=time;
		}
	}


比较java枚举成员使用equal还是==

问题 我知道Java枚举会被编译成一个包含私有构造参数和一堆静态方法的类,当去比较两个枚举的时候,总是使用equals()方法,例如: public useEnums(SomeEnum a...
  • lgh1992314
  • lgh1992314
  • 2016年11月22日 20:34
  • 8306

java 枚举enum的使用(与在switch中的使用)

实际开发中,很多人可能很少用枚举类型。更多的可能使用常量的方式代替。但枚举比起常量来说,含义更清晰,更容易理解,结构上也更加紧密。看其他人的博文都很详细,长篇大论的,这里理论的东西不说了,一起看看在实...
  • KokJuis
  • KokJuis
  • 2017年06月09日 14:53
  • 5100

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

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

java中 foreach遍历枚举enum中的元素

public class EnumOrder { public static void main(String[] args) { for (Spiciness s : Spiciness....
  • kenchow126
  • kenchow126
  • 2012年09月11日 15:55
  • 45416

java 枚举 循环遍历以及一些简单常见的使用

什么时候想用枚举类型: 有时候,在设计一个java model对象的时候,你需要一些具体的常量字符串之类的东西,这个东西又没必要跟整个项目的全局常量放在一起,就放在model的java文件里面是最合适...
  • qq_27093465
  • qq_27093465
  • 2016年06月18日 16:04
  • 19235

黑马程序员学习笔记 Java的三大框架

如果做javaweb开发,spring是一定要学的,现在主流还是ssh,就是strurs+hibernate+spring,其中hibernate是持久层,用来持久化数据库操作的,如果不喜欢可以学点别...
  • Mr_April
  • Mr_April
  • 2015年07月03日 17:12
  • 1605

enum枚举定义转json

场景: 需要把enum里面定义的全部枚举及其属性,转换为json,然后传到页面(作为下拉菜单key-value) http://www.baeldung.com/jackson-serialize...
  • shizhijie737
  • shizhijie737
  • 2016年04月11日 18:09
  • 5198

Java中枚举及其构造函数

一、最简单的枚举 public enum Season{ Spring,Summer,Fall,Winter}; 二、带构造器的枚举 注意:1、需要在枚举实例后面加上分号,然后再写构造函数等     ...
  • vvhesj
  • vvhesj
  • 2015年04月30日 14:40
  • 9971

java里,enum对象的反射创建

Java 的 enum 是 singleton class (只能有一个 instance)。Java 通过编译器和 JVM 联手来防止enum 产生超过一个class:不能利用 new、clone(...
  • sdbany
  • sdbany
  • 2008年01月26日 20:13
  • 9098

黑马程序员_Java基础_我的day01学习笔记

01. 常见的DOS命令讲解 A:d: 回车 盘符切换 B:dir(directory):列出当前目录下的文件以及文件夹 C:cd (change directory)改变指定目录(进入指定目录)...
  • qq_21796869
  • qq_21796869
  • 2016年07月05日 10:36
  • 206
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:黑马程序员——JAVA笔记——枚举enum
举报原因:
原因补充:

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