第十一章 枚举与泛型 总结

11.1 枚 举 
        JDK 1.5中新增了枚举,枚举是一种数据类型,它是一系列具有名称的常量的集合。比如在数中所学的集合:A={1,2,3},当使用这个集合时,只能使用集合中的1、2、3这3个元素,不是这3个元素的值就无法使用。Java中的枚举是同样的道理,比如在程序中定义了一个性别枚举,里面只有两个值:男、女,那么在使用该枚举时,只能使用男和女这两个值,其他的任何值都是无法使用的。本节将详细介绍枚举类型。
11.1.1使用枚举类型设置常量
        以往设置常量,通常将常量放置在接口中,这样在程序中就可以直接使用,并且该常量不能被修改,因为在接口中定义常量时,该常量的修饰符为 final与static。
例如,在项目中创建 Constants接口,在接口中定义常量的常规方式。

public interface Constants l
public static final int Constants_A=l; public static final int Constants_B=12;


在类取代了这种常量定义方式,因为通过使用枚举类型。可以赋予程序在编译时进行检查的功能。使用枚举类型定义常量的语法如下:


public enum Constants{
Constants A, Constants B, Constants C

                                       }
其中,enum需程中使用该常量时,可以使用Canstan
Constants A来表示

代码如下:

interface Constants { // 将常量放置在接口中
	public static final int Constants_A = 1;
	public static final int Constants_B = 12;
}
 
public class test12{
	enum Constants2 { // 将常量放置在枚举类型中
		Constants_A, Constants_B
	}
 
	// 使用接口定义常量
	public static void doit(int c) { // 定义一个方法,这里的参数为int型
		switch (c) { // 根据常量的值做不同操作
		case Constants.Constants_A:
			System.out.println("doit() Constants_A");
			break;
		case Constants.Constants_B:
			System.out.println("doit() Constants_B");
			break;
		}
	}
 
	public static void doit2(Constants2 c) { // 定义一个参数对象是枚举类型的方法
		switch (c) { // 根据枚举类型对象做不同操作
		case Constants_A:
			System.out.println("doit2() Constants_A");
			break;
		case Constants_B:
			System.out.println("doit2() Constants_B");
			break;
		}
	}
 
	public static void main(String[] args) {
		test12.doit(Constants.Constants_A); // 使用接口中定义的常量
		test12.doit2(Constants2.Constants_A); // 使用枚举类型中的常量
		test12.doit2(Constants2.Constants_B); // 使用枚举类型中的常量
		test12.doit(3);
		// ConstantsTest.doit2(3);
	}
}

 运行结果为:

第十一章 枚举与泛型 总结_第1张图片

11.1.2深入了解枚举类型
1.操作枚举类型成员的方法
        枚举类型较传统定义常量的方式,除了具有参数类型检测的优势之外,还具有其他方面的优势。用户可以将一个枚举类型看作是一个类,它继承于ja va.lang.Enum类,当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实例, 这些枚举类型成员都默认被 final、public、static 修饰,所以当使用枚举类型成员时直接使用枚举类型名称调用枚举类型成员即可。 

第十一章 枚举与泛型 总结_第2张图片

(1)values():将枚举类型成员以数组的形式返回

代码如下:

import static java.lang.System.out;
 
public class test12 {
	enum Constants2 { // 将常量放置在枚举类型中
		Constants_A, Constants_B
	}
 
	// 循环由values()方法返回的数组
	public static void main(String[] args) {
		for (int i = 0; i < Constants2.values().length; i++) {
			// 将枚举成员变量打印
			out.println("枚举类型成员变量:" + Constants2.values()[i]);
		}
	}
}

 运行结果为:

第十一章 枚举与泛型 总结_第3张图片

 (2)valueOf()与compareTo()
        枚举类型中静态方法vluf将普字转为类型,而compareTo0方法用于交两个枚举类型成员定义时的顺序。调用compareTo法时,如果方法中参数在调用该方法的年对象位置之前,则返回正整数;如果两个互相比较的枚举成员的位置相同,则返回 0:如果方定参数在调用该方法的枚举对象位置之后,

你可能感兴趣的:(章节总结,java,开发语言)