`

JDK5新特性之一“枚举”总结

    博客分类:
  • java
阅读更多
JDK1.5加入了一个全新类型的“类”—枚举类型。为此JDK1.5引入了一个新关键字enum。
【并不能说成是一个类,它的真正类型叫枚举,但是它和类又很像。】
我们可以这样来定义一个枚举类型
Public enum Color{
Red;
White;
Blue;
}
然后这样来使用Color myColor = Color.Red;

枚举类型还提供了两个有用的静态方法values()和valueOf()。我们可以很方便地使用它们,例如:
For(Color c : Color.values()) {
System.out.println(c);
}


另外在这里需要补充一个知识点:switch后面可以跟五种类型数据:byte、short、int、char、枚举类型


定义枚举类型时本质上就是在定义一个类别,只不过是很多细节有编译器帮您完成了,所以某些程度上,enum关键字的作用就像是class或interface

当您使用“enum”定义枚举类型时,实质上您定义出来的类型继承自java.lang.Enum类型,而每个枚举的成员其实就是您定义的枚举类型的一个实例(Instance),他们都被预设为final,所以您无法改变他们,他们也是static成员,所以您可以通过类型名称直接使用它们,当然,最重要的,它们都是公开的(public)。


EnumSet的名称说明了其作用,它是在J2SE5.0后加入的新类别,可以协助您建立枚举值的集合,它提供了一系列静态发光法,可以让您指定不同的集合建立方式。

枚举(Enum):我们所定义的每个枚举类型都继承自java.lang.Enum 类,枚举中的每个成员默认都是public static final的。

而每个枚举的成员其实就是您定义的枚举类型的一個实例(Instance)。换句话说,当定义了一个枚举类型后,在编译时刻就能确定该枚举类型有几个实例,分别是什么。在运行期间我们无法再使用该枚举类型创建新的实例了,这些实例在编译期间就已经完全确定下来了。

枚举在实际开发中应用的场合:经常用在用户权限验证的地方,比如将系统里面需要的几种权限类型定义为一个枚举类;对于方法参数只接收有限的几类值的情况;应用的场合都是某个类型它的对象实例的个数已经完全确定了,没法在运行的时候再去生成实例。


下面是一些枚举相关的练习类,经常查看:
package com.shengshiyuan5;

public enum Color {
	
	Red, White, Blue, Black
	
}

package com.shengshiyuan5;

public class ColorTest {
	public static void main(String[] args) {
		Color myColor = Color.Blue;
		System.out.println(myColor);

		for (Color c : Color.values()) {
			System.out.println(c);
		}
	}
}


package com.shengshiyuan5;

public class EnumTest {
	public static void doOp(OpConstant opConstant) {
		switch (opConstant) {
		case TURN_LEFT:
			System.out.println("向左转");
			break;
		case TURN_RIGHT:
			System.out.println("向右转");
			break;
		case SHOOT:
			System.out.println("射击");
			break;
		}
	}

	public static void main(String[] args) {
		doOp(OpConstant.SHOOT);
	}
}

enum OpConstant {
	TURN_LEFT, TURN_RIGHT, SHOOT
}


package com.shengshiyuan5;

public enum Coin {
	// 就像Class一样,生成对象的时候去调用构造方法,这里也相似,在编译的时候每个成员都会生成一个Coin类型的实例,在生成实例的过程中调用Coin(String
	// value)方法需要传递一个参数。
	penny("hello"), nickel("world"), dime("welcome"), quarter("hello world");

	private String value;

	public String getValue() {
		return value;
	}

	Coin(String value) {
		this.value = value;
	}

	public static void main(String[] args) {
		Coin coin = Coin.quarter;
		System.out.println(coin.getValue());
	}
}



之后又讲解了枚举的集合类EnumSet<E extends Enum<E>>,比较繁琐,而且不经常用到,所以没有总结。
分享到:
评论

相关推荐

    jdk1.5新特性介绍

    - 泛型是JDK 1.5中最显著的新特性之一,它允许程序员在类型级别进行编程,从而提高代码的可读性和重用性,同时减少了强制类型转换的错误。 - 使用泛型可以避免运行时类型检查异常,并且使得集合操作更加安全。 2....

    JDK7-8新特性介绍

    Stream API是JDK 8中最强大的新特性之一,它提供了一种新的方式来处理数据集合或其他类型的序列化数据。Stream API可以让你像处理SQL查询一样处理集合,这极大地简化了集合操作,尤其是复杂的集合操作。 例如,查找...

    JDK1.5-1.6-1.7之新特性总结-1

    泛型是JDK 1.5最重要的特性之一,它允许在类、接口和方法中定义类型参数,从而增强了类型安全性和代码重用。例如,可以定义一个通用的集合类`List&lt;T&gt;`,其中T代表任意类型。泛型还可以用于限制方法的参数类型,避免...

    jdk5.0 资源下载

    总结,JDK5.0是Java发展的重要里程碑,它的新特性显著提高了编程的效率和代码质量。通过配置并使用JDK5.0,开发者能够更好地理解和掌握Java编程,从而积累丰富的学习经验。同时,了解和熟练使用bin目录下的各种工具...

    JDK1.5的五大新特性

    JDK 1.5 中引入的泛型功能是其中最重要的新特性之一。在引入泛型之前,Java 中的集合只能存储 `Object` 类型的对象,这意味着开发者需要不断地进行类型转换来确保正确性,这不仅增加了代码量,还可能导致运行时错误...

    Annotation(注解)详细教程,jdk新特性

    Annotation(注解)是Java编程语言的一个重要特性,自JDK 1.5引入以来,逐渐成为编写可维护和可扩展代码的关键工具。...对于Java开发者来说,理解和熟练运用Annotation是现代Java编程的必备技能之一。

    jdk-1_5_0_22-linux-amd64.bin

    1. **泛型**:这是Java 5引入的最大改变之一,允许在类、接口和方法中使用类型参数,提高了代码的类型安全性,减少了运行时类型异常的可能性。 2. **枚举类型**:Java 5引入了枚举作为替代常量集合的更安全和强大的...

    jdk大全.md

    - **JDK 5.0**(2004年):引入了泛型、枚举、可变参数等新特性。 - **JDK 6**(2006年):增强了并发支持,并添加了一些实用的新API。 - **JDK 7**(2011年):引入了多线程改进、类型注解等。 - **JDK 8**(2014年...

    Java-jdk1.5安装包

    在Java 5.0中,最重要的特性之一就是泛型的引入。泛型允许开发者在定义类、接口和方法时指定类型参数,提高了代码的类型安全性和可读性。例如,ArrayList中的T就是一个类型参数,可以替换为任何具体类型,如String、...

    java JDK 1.7、JDK 1.8、JDK 1.9各windows版本64位官方下载及对应的中文官方文档API.rar

    Java JDK 1.9,即Java 9,于2017年发布,是Java的重大更新之一。其中最重要的新特性是模块系统(Project Jigsaw),它将JDK和应用程序划分为模块,提高了可维护性和性能。此外,还引入了改进的JShell(即时命令行...

    jdk-1_5_0_22-linux-amd64-rpm

    JDK 1.5,也被称为Java SE 5.0,是一个重要的里程碑,因为它引入了许多关键的更新和改进,例如泛型、枚举、可变参数、增强的for循环(foreach)、类型安全的自动装箱和拆箱,以及注解(Annotations)等新特性。...

    JDK1.5的32位和64位安装包

    首先,JDK1.5最重要的特性之一是泛型(Generics)。泛型允许在类、接口和方法中使用类型参数,从而提高了代码的类型安全性和可读性。通过泛型,开发者可以限制容器只能存储特定类型的对象,避免了强制类型转换,减少...

    jdk 配置 很详细的一份jdk配置 是我自己总结出来的

    这两个版本在功能上有所不同,JDK 5.0引入了许多新特性,比如泛型、枚举类型等。你可以根据个人需求选择适合的版本,下载地址通常在Oracle的官方网站上可以找到。下载过程中可能会遇到文件命名问题,需要手动更改...

    JDK 8.0 api doc chm 完整索引 目录

    1. Lambda表达式:这是JDK 8最重要的特性之一,它引入了一种简洁的匿名函数语法,允许开发者以更简洁的方式处理函数式编程场景,如集合操作、并行流等。 2. 方法引用和构造器引用:与Lambda表达式紧密相关,方法...

    JDK1.8分享给大家

    JDK 1.8中最重要的特性之一就是引入了Lambda表达式。Lambda表达式简化了函数式编程,允许开发者以更简洁的方式处理匿名函数。它使得编写简洁的代码成为可能,特别是对于那些处理集合和并发操作的场景,如Stream API...

    jkd1_5~1_7之新特性总结

    本文将详细总结JDK 1.5到1.7之间的重要新特性。 ### JDK 1.5(也称为Java 5.0) #### 1. Generics(泛型) 泛型是Java 5.0中的重大更新,它允许在类、接口和方法声明中使用类型参数,提高了代码的类型安全性和重用...

    jdk api 1.8.rar

    总结来说,JDK 1.8 API中文版是Java开发者的宝贵资源,它提供了对JDK 1.8核心库的详细解释,帮助开发者更高效地利用这些新特性和功能,提升开发效率和代码质量。虽然谷歌翻译可能存在一些语言上的瑕疵,但整体上仍然...

    jdk 150中文版

    泛型是Java 5.0中的核心特性之一,它允许在类、接口和方法中使用类型参数,提高了代码的类型安全性和可读性。通过泛型,开发者可以创建可重用的组件,这些组件可以处理多种数据类型,而无需进行类型转换或强制类型...

    jdk-7u25-windows-i586.zip

    JDK 7的主要改进之一是其对类型推断的支持,通过引入"钻石操作符"(),使得在创建泛型实例时可以省略类型参数,从而提高代码的简洁性。例如,`List&lt;String&gt; list = new ArrayList();`,这在之前需要写成`List...

Global site tag (gtag.js) - Google Analytics