基础加强____JDK1.5高新特性之__【枚举】

本文深入探讨Java 1.5引入的枚举特性,包括枚举的概念、如何模拟枚举及定义枚举,还介绍了带有构造方法和抽象方法的枚举,并通过WeekDay和TrafficLamp等示例详细阐述枚举的使用。


JDK1.5版本出现的高级特性 Enumeration

枚举 Enumeration "1.5新特性"
概念:
	枚举就是要让某个类型的变量取值只能为若干个固定值中的一个,否则编译器就会报错。
	枚举可以让编译器在编译时就可以控制程序中填写的非法值;而普通变量的方式在开发阶段无法实现这一目标。
WeekDay模拟枚举的步骤:
	1,私有化构造方法
	2,每个元素分别用一个公有的静态成员变量表示
	3,可以有若干共有方法或抽象方法
定义enum枚举
	枚举是一种特殊的类,每个元素都是该类的一个实例对象
	枚举相当于一个类,其中可以定义构造方法、成员变量、普通方法和抽象方法。
	枚举元素必须位于枚举体中最开始部分,枚举列表末尾要有";"与其他成员分隔。
	枚举格式:枚举元素必须位于枚举最开始部分

带有构造方法的枚举(WeekDay)
	构造方法必须为私有,如果有多个构造方法,调用由参数列表决定
	枚举元素MON与MON()效果一样,都是调用默认的构造方法
带有抽象方法的枚举(TrafficLamp)
	定义枚举列表
	元素实现枚举中抽象方法nextLamp,每个元素都是枚举的子类生成的实例对象,以内部类的形式定义

从枚举中编程思想的提升
	类的方法返回值类型可以是其本身
	类中可以定义静态常量,该常量数据类型可以是该类的实例对象
	
枚举类

	使用enum声明,默认直接继承了java.lang.Enum类,而不是Object类;
	枚举类的对象是固定的,实例个数有限,不可以再new,枚举对象后可以跟()。
	枚举元素必须位于枚举类体中的最开始部分,枚举元素后要有分号与其他成员分隔。
	枚举类的构造方法的权限修饰符默认是private;
	一旦枚举对象后面加上{},那么该对象实际是枚举匿名内部类对象;
	所有枚举类都提供一个静态的values()方法(返回该枚举类所有对象组成的数组),便于遍历所有枚举对象;
	所有枚举类都提供一个静态的valueOf(String name)方法, 返回枚举类中对象名等于 name的对象。

	若枚举中只有一个成员,就可以作为一种"单例"的实现方式		
  枚举不可以new();即便是反射也不可以!
	所以枚举型单例模式有着比普通单例有着更高的安全性


======================================================================================

枚举示例:

package itheima.enhance;

public class EnumeTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		WeekDay weekDay = WeekDay.SUN;
		System.out.println(weekDay.nextDay());
		
		WeekDay1 weekDay2 = WeekDay1.FRI;
		System.out.println(weekDay2);
		System.out.println(weekDay2.ordinal());//在枚举中所处的位置
		System.out.println(WeekDay1.valueOf("SUN").toString());//静态方法
		System.out.println(WeekDay1.values().length);//静态方法:枚举数组长度
	}
	
	public enum WeekDay1{	//定义带有构造方法的枚举
		//1,元素列表必须放在最前,否则编译报错,枚举列表后面有操作的话要加上“;”
		//2,枚举的构造方法必须定义成私有,一般方法无此限制
		SUN(1),MON,TUE,WED,THU,FRI,SAT;//元素是静态的,初始化时会调用构造方法(7次)
		private WeekDay1(){System.out.println("1");}
		private WeekDay1(int day){System.out.println("222");}//两个构造法方法,空/实参
	}
	
	public enum TrafficLamp{	//带有抽象方法的枚举
		RED(30){
			public TrafficLamp nextLamp(){//实现抽象方法
				return GREEN;
			}
		},
		GREEN(40){
			public TrafficLamp nextLamp(){
				return YELLOW;
			}				
		},
		YELLOW(10){
			public TrafficLamp nextLamp(){
				return RED;
			}				
		};
		public abstract TrafficLamp nextLamp();//抽象方法
		private int time;
		private TrafficLamp(int time){this.time=time;}//有参de构造方法
		
	}
}




资源下载链接为: https://pan.quark.cn/s/5c50e6120579 JDKJava Development Kit)是Oracle公司推出的一款用于开发和运行Java程序的工具集,是Java开发人员的核心工作环境。本资源提供的是JDK 1.5版本的32位安装包,主要面向那些需要支持旧系统或有特定项目需求的开发者。JDK 1.5,即Java SE 5.0,于2004年9月30日发布,是Java发展史上的一个重要版本。它引入了许多新特性和改进,显著提升了Java语言的效率和可维护性。以下是其主要特性: 泛型(Generics):为集合框架提供了类型安全机制,能够在编译阶段检查类型,避免运行时出现ClassCastException。它支持在类、接口和方法中使用类型参数,使代码更易读、更易复用。 枚举(Enums):枚举类型是一组预定义的常量,提供了更强的类型安全。它取代了以往用整数或字符串常量表示固定值的方式,降低了出错风险。 自动装箱/拆箱(Autoboxing and Unboxing):Java 1.5引入了这一机制,实现了基本数据类型与包装类之间的自动转换,简化了代码编写。 增强型for循环(Enhanced for Loop):也称为foreach循环,简化了数组和集合的遍历操作,使代码更加简洁易读。 类型推断(Type Inference):在使用匿名内部类和局部变量时,编译器能够根据上下文自动推断变量类型,减少了冗余的类型声明。 可变参数(Varargs):允许方法接受数量可变的参数,语法类似于数组,提高了方法的灵活性。 静态导入(Static Import):允许开发者直接将类的静态成员导入到作用域中,避免了频繁使用类名的繁琐操作。 注解(Annotations):注解是一种元数据机制,允许在代码中添加元信息,供编译器、JVM或其他工具使
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值