`

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中的枚举类型

    Java 中的枚举类型 Java 中的枚举类型是一种特殊的数据类型,它允许我们定义一组命名的常量。枚举类型骨子里是一个类别,所以您编译完成后,会产生一个 `.class` 档案。 枚举类型的用法 在 Java 中,我们可以使用...

    java枚举类型说明

    下面是一些关于Java枚举的基础知识点: - **定义**: 使用`enum`关键字定义枚举类型,可以在枚举类型中定义一组固定的值,这些值都是该枚举类型的实例。 - **实例**: 枚举类型的每一个值都可以看作是该枚举类型的一...

    JAVA基础-反射-枚举

    ### JAVA基础-反射-枚举知识点详解 #### 一、反射概述 反射是Java语言提供的一种能在运行时分析类和对象的能力。通过反射,我们可以在程序运行时动态地获取类的信息(如类名、方法、构造函数等)并操作这些信息。 ...

    java枚举的一个例子

    这里需要注意的是,尽管枚举支持实例变量和构造器,但在实际应用中,枚举值通常被认为是不可变的,因此并不推荐为枚举值添加setter方法。 #### 枚举的方法 枚举提供了多种内置的方法来帮助开发者更好地使用枚举值...

    517.515.JAVA基础教程_集合-复习:枚举类(517).rar

    本教程将深入探讨Java枚举类的概念、用法以及在集合中的应用。 一、枚举类的概念 枚举类是Java 5引入的新特性,它允许我们创建具有预定义值的类型安全的类。枚举不是简单的常量集合,而是一个完整的类,可以拥有...

    MLDn学习笔记 —— JDK新特性(枚举)

    1. 枚举类型是类:枚举实质上是单例类,每个枚举值都是类的实例,它们共享同一类的属性和方法。 2. 自动继承:枚举默认继承`java.lang.Enum`类,可以添加方法和字段,实现接口。 3. 静态常量:枚举常量在内存中只...

    java枚举类型优秀源代码

    它能够提高代码的可读性和可维护性,并且Java中的枚举提供了一些内置的方法来帮助我们更好地管理和操作这些常量。 #### 特性 - **语法格式**:定义枚举的基本语法如下: ```java public enum Color { RED, GREEN...

    java核心基础技术卷,(基础语法,面向对象,异常,泛型,IO,枚举,反射机制,集合,内部类,)

    "Java核心基础技术卷详解" ...Java 核心基础技术卷涉及到 Java 的基础语法、面向对象、异常、泛型、IO、枚举、反射机制、集合、内部类等多方面的知识点,为 Java 开发者提供了一个全面的学习指南。

    java enum 枚举 学习资料

    枚举类的应用场景非常广泛,例如定义星期几、颜色、性别等枚举值。枚举类可以使程序的逻辑更加清晰、易于理解和维护。 11. 枚举类和普通类的区别 枚举类和普通类的最大区别是,枚举类的实例是固定的、不可变的,而...

    2022年掌握JDK1.5枚举类型Java教程.docx

    2. 添加方法和变量:枚举类内部可以定义方法和变量,例如在上面的例子中,添加了一个getRandomColor()方法用于随机返回枚举值。需要注意的是,变量和方法定义必须在枚举常量之后。 3. 覆盖toString和valueOf方法:...

    大学课程讲义-Java基础-枚举&注解.pptx

    * 枚举类提供了一个 `values` 方法,可以遍历所有的枚举值。 枚举类的应用 枚举类可以用于实现单例模式,枚举类的对象可以作为一种单例对象。 注解(Annotation) Java 中的注解是一种特殊的元数据,它可以附加...

    在Java中使用枚举

    - 与C++中的枚举不同,Java枚举默认是单例的,每个枚举值都是一个独立的对象。 3. **无缝的交互操作**: - Java枚举可以与其他语言特性无缝集成,例如,可以作为switch语句的case: ```java switch (day) { ...

    枚举的应用例题

    在处理逻辑时,我们可以比较枚举值,或者将枚举值与变量进行赋值。枚举还支持遍历,可以获取所有枚举成员。 4. 枚举的关联值: 枚举成员可以关联不同的值,不局限于整数。在C#中,可以为每个成员指定一个值: ```...

    Java基础应用实例

    9. **类和对象**:Java是一种面向对象的语言,实例将解释类的定义、对象的创建以及封装、继承和多态三大特性。 10. **构造器**:特殊的方法,用于初始化新创建的对象。 11. **访问修饰符**:public, private, ...

    【Java基础笔记】枚举和注解.docx

    在Java编程语言中,枚举(Enum)和注解(Annotation)是两种非常重要的特性,它们分别用于定义固定的常量集合和提供元数据信息。以下是对这两个概念的详细说明: **一、枚举类** 1. **定义**: - 自定义枚举类:...

    Java中枚举的应用.docx

    枚举在Java中被引入,主要是为了克服常量集(通常用public static final定义)的一些局限性,比如防止非法值的创建,增强类型安全性,并支持面向对象编程特性。 1. **单独声明的枚举** 当枚举单独声明时,它类似于...

    Java中的Enum枚举用法.doc

    ### Java中的Enum枚举用法详解 #### 一、引言 在Java编程语言中,枚举(Enum)...通过本篇文章的介绍,相信你已经掌握了Java枚举的基本用法和应用场景。在实际开发过程中,合理利用枚举将能让你的代码更加优雅和高效。

    java基础+java高级

    7. **枚举**:枚举是Java中的一种特殊类,用于表示有限集合的值,提供了一种强类型的安全方式。 8. **注解(Annotation)**:注解为编译器或运行时系统提供元数据,用于简化代码的处理和配置。 9. **设计模式**:...

    java枚举的一个实例

    Java枚举是编程语言Java中的一个特色特性,它在类、接口和变量的定义中扮演着特殊的角色。枚举在Java中被用作一种数据类型,用于定义一组固定的常量,这些常量可以代表特定的值或状态。通过枚举,我们可以确保变量...

    Java基础尚硅谷宋红康学习笔记

    【Java基础】 Java是一种广泛使用的面向对象...这些是Java基础知识和高级技术的主要组成部分,掌握它们能够帮助开发者构建稳定、高效、可维护的Java应用程序。通过深入学习和实践,你可以不断提升自己的Java编程能力。

Global site tag (gtag.js) - Google Analytics