`

Java基础三: 枚举高级应用(向枚举值对象中添加变量和方法)

阅读更多
/**
 * JDK1.5 枚举高级应用(向枚举值对象中添加变量和方法)
 * 
 * @author 张明学
 * 
 */
public class EnumStudy {

	public static void main(String[] args) {
		WeekDay weekDay = WeekDay.SUN;
		System.out.println("对象本身:" + weekDay);// 对象本身:SUN
		System.out.println("枚举name方法" + weekDay.name());// 枚举name方法SUN
		System.out.println("枚举ordinal方法:序号" + weekDay.ordinal());// 枚举ordinal方法:序号0
		System.out.println("枚举toString方法" + weekDay.toString());// 枚举toString方法SUN
		// valueOf()方法:将String转化成枚举对象
		System.out.println(WeekDay.valueOf("FRI"));
		// values()方法:返回所有的枚举值
		System.out.println(WeekDay.values().length);
		for (WeekDay wd : WeekDay.values()) {
			System.out.println(wd);
		}
		// ************枚举高级应用************ \\
		System.out.println("----------------");
		// 枚举的每个值都是一个对象,它们都有构造方法,我们可给它重构一些构造方法
		// 每次第一个次使用枚举值时,它会为所有枚举值都实例化一次
		System.out.println(WeekDay2.SUN);
		System.out.println(WeekDay2.TUE);
		System.out.println("----------------");

		// 枚举的每个值都是一个对象,我们也可以为它们添加一些属性和方法
		TranfficLamp lamp = TranfficLamp.GREEN;
		// TranfficLamp枚举添加的特有的属性
		System.out.println(lamp.time);
		// TranfficLamp枚举添加的特有的方法
		System.out.println(lamp.nextLamp());
	}

	// 普通的枚举
	public enum WeekDay {
		SUN, MON, TUE, WED, THI, FRI, SAT;
	}

	// 有多个构造方法的枚举
	public enum WeekDay2 {
		SUN(0), MON(1), TUE(), WED, THI, FRI, SAT;
		// 所有的方法或其它必须放在枚举值的下面
		// 枚举的构造方法必须是private的
		private WeekDay2() {
			System.out.println("调用第一个构造方法");
		}

		private WeekDay2(int day) {
			System.out.println("调用第二个构造方法");
		}

	}

	// 有抽象方法和属性的枚举
	public enum TranfficLamp {
		RED(30) {
			public TranfficLamp nextLamp() {
				return GREEN;
			}
		},
		GREEN(45) {
			public TranfficLamp nextLamp() {
				return YELLOW;
			}
		},
		YELLOW(5) {
			public TranfficLamp nextLamp() {
				return RED;
			}
		};
		// 该枚举有一个抽象方法
		public abstract TranfficLamp nextLamp();

		// 该枚举有一个属性
		public int time;

		// 该枚举的构造方法必须要有一个int类型参数
		private TranfficLamp(int time) {
			this.time = time;
		}
	}

}

 输出结果:

 

对象本身:SUN
枚举name方法SUN
枚举ordinal方法:序号0
枚举toString方法SUN
FRI
7
SUN
MON
TUE
WED
THI
FRI
SAT
----------------
调用第二个构造方法
调用第二个构造方法
调用第一个构造方法
调用第一个构造方法
调用第一个构造方法
调用第一个构造方法
调用第一个构造方法
SUN
TUE
----------------
45
YELLOW

 

分享到:
评论

相关推荐

    Java 基础核心总结 +经典算法大全.rar

    获取类中的变量(Field) 获取类中的方法(Method) 获取类的构造器(Constructor) 获取注解 通过反射调用方法反射的应用场景 Spring 的 IOC 容器反射 + 抽象工厂模式 JDBC 加载数据库驱动类反射的优势及缺陷 增加程序的...

    关于java枚举ppt

    枚举的简单的介绍 枚举的作用 1.枚举可以实现一个或多个接口 2.可以定义新的变量 3.可以定义新的方法 4.可以定义根据具体枚举值而相异的类

    超级有影响力霸气的Java面试题大全文档

    对象引用实例变量的缺省值为 null,而原始类型实例变量的缺省值与它们的类型有关。 7、String 和StringBuffer的区别  JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的...

    Java开发技术大全(500个源代码).

    showInstVar.java 演示不同的对象拥有不同的成员变量 showMain.java 演示main方法访问本类成员 showMethod.java 演示如何定义一个方法体 showReturn_1.java return语句示例1 showReturn_2.java return语句示例2...

    Java2入门经典.rar

    译者序 序 前言 第一章:Java概述 什么是Java Java语言的特性 学习Java ava程序 学习Java要走的路 ava环境 基于Java语言的面向对象...有固定序列整型值的变量(枚举) 布尔型变量 运算符的优先级 程序注释 本章小结 ……

    java2入门经典.part01

    java2入门经典.part01 Java2入门经典 图书目录 译者序 序 前言 第一章:Java概述 什么是Java Java语言的特性 ...有固定序列整型值的变量(枚举) 布尔型变量 运算符的优先级 程序注释 本章小结 ……

    疯狂JAVA讲义

    5.3.2 成员变量的初始化和内存中的运行机制 128 5.3.3 局部变量的初始化和内存中的运行机制 130 5.3.4 变量的使用规则 130 5.4 隐藏和封装 132 5.4.1 理解封装 132 5.4.2 使用访问控制符 132 5.4.3 package和...

    【05-面向对象(下)】

    •如果希望获得包装类对象中包装的基本类型变量,则可以使用包装类提供的XxxValue()实例方法。 自动装箱与自动拆箱 •JDk还提供了自动装箱和自动拆箱。自动装箱就是把一个基本类型的变量直接赋给对应的...

    java联想(中文)

    2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入...

    Thinking in Java简体中文(全)

    2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入...

    java 面试题 总结

    JAVA相关基础知识 1、面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用...

    java 编程入门思考

    2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入...

    Java初学者入门教学

    2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入...

    Java中三种标准注解和四种元注解.pdf

    类型成员(⽅法、构造⽅法、成员变量、枚举值)、⽅法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使⽤了 target可更加明晰其修饰的⽬标。  作⽤:⽤于描述注解的使⽤范围(即:被描述的...

    JAVA_Thinking in Java

    2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入...

    Thinking in Java 中文第四版+习题答案

    2.5 方法、自变量和返回值 2.5.1 自变量列表 2.6 构建Java程序 2.6.1 名字的可见性 2.6.2 使用其他组件 2.6.3 static关键字 2.7 我们的第一个Java程序 2.8 注释和嵌入文档 2.8.1 注释文档 2.8.2 具体语法 2.8.3 嵌入...

    微软JavaScript手册

    isPrototypeOf 方法 返回一个 Boolean 值,表明对象是否存在与另一对象的原型链中。 italics 方法 将 HTML的 <I> 标识添加到 String 对象中的文本两端。 item 方法 返回集合中的当前项。 join 方法 返回一个由...

    21天学通Java-由浅入深

    150 8.4 对象引用 151 8.5 方法的重写和重载 152 8.5.1 方法重写的特点 152 8.5.2 方法重载的特点 154 8.5.3 重写的返回类型 156 8.5.4 重写是基于继承的 158 8.5.5 静态方法是不能重写的 159 8.5.6 三者之间的关系 ...

Global site tag (gtag.js) - Google Analytics