JDK 新特性之枚举(enum):
枚举就是要某个类型的变量的取值只能是几个固定值中的某一个,否则,编译器就会报错,枚举可以让编译器在编译时就可以控制程序中填写的非法值,普通变量的方式无法实现这一目标;
枚举的实现:
package learn;
/**
* 枚举
* @author hui
*/
public class EnumTest {
public static void main(String[] args) {
WeekDay weekDay=WeekDay.SUN;//自己定义的类型WeekDay
System.out.println(weekDay.nextDay().toString());
}
}
在上面的类中,自己定义了一个类型WeekDay,建立一个自己的枚举类WeekDay_1;
package learn;
public class WeekDay_1 {
/* 这个类必须要有一个私有的构造 */
private WeekDay_1(){};
public static final WeekDay_1 SUN = new WeekDay_1() ;//星期天
public static final WeekDay_1 MON = new WeekDay_1() ;//星期一
public static final WeekDay_1 TUS = new WeekDay_1() ;//星期二
public static final WeekDay_1 WEN = new WeekDay_1() ;//星期三
public static final WeekDay_1 THUR = new WeekDay_1() ;//星期四
public static final WeekDay_1 FRI = new WeekDay_1() ;//星期五
public static final WeekDay_1 SAT = new WeekDay_1() ;//星期六
/*
* 他有一个方法,返回下一天
* */
public WeekDay_1 nextDay(){
if (this==SUN) { return MON; } else
if(this==MON){ return TUS; }else if(this==TUS){ return WEN; }else
if(this==WEN){ return THUR; }else if(this==THUR){ return FRI; }else
if(this==FRI){ return SAT; }else { return SUN; }
}
/**
* 重写toString()方法
*/
public String toString(){
if (this == SUN) {
return "Sunday";
} else if (this == MON) {
return "Monday";
} else if (this == TUS) {
return "Tuesday";
} else if (this == WEN) {
return "Wednesday";
} else if (this == THUR) {
return "Thursday";
} else if (this == FRI) {
return "Friday";
} else {
return "Saturday";
}
}
}
上面的方法,如果因为if..else..太过繁琐,可以写成:
package learn;
public abstract class WeekDay {
private WeekDay() {
}
//使用内部类的方式来实现nextDay
public static final WeekDay SUN = new WeekDay() {
@Override
public WeekDay nextDay() {
return MON;
}
};
public static final WeekDay MON = new WeekDay() {
@Override
public WeekDay nextDay() {
return TUS;
}
};
public static final WeekDay TUS = new WeekDay() {
@Override
public WeekDay nextDay() {
return WEN;
}
};
public static final WeekDay WEN = new WeekDay() {
@Override
public WeekDay nextDay() {
return THUR;
}
};
public static final WeekDay THUR = new WeekDay() {
@Override
public WeekDay nextDay() {
return FRI;
}
};
public static final WeekDay FRI = new WeekDay() {
@Override
public WeekDay nextDay() {
return SAT;
}
};
public static final WeekDay SAT = new WeekDay() {
@Override
public WeekDay nextDay() {
return SUN;
}
};
/*
* public WeekDay nextDay(){ if (this==SUN) { return MON; } else
* if(this==MON){ return TUS; }else if(this==TUS){ return WEN; }else
* if(this==WEN){ return THUR; }else if(this==THUR){ return FRI; }else
* if(this==FRI){ return SAT; }else { return SUN; } }
*/
public abstract WeekDay nextDay();
public String toString() {
if (this == SUN) {
return "Sunday";
} else if (this == MON) {
return "Monday";
} else if (this == TUS) {
return "Tuesday";
} else if (this == WEN) {
return "Wednesday";
} else if (this == THUR) {
return "Thursday";
} else if (this == FRI) {
return "Friday";
} else {
return "Saturday";
}
}
}
使用JDK自带的枚举:
package learn;
/**
* 枚举
* @author hui
*
*/
public class EnumTest {
public static void main(String[] args) {
WeekDay weekDay=WeekDay.SUN;
System.out.println(weekDay.nextDay().toString());
WeekDay_2 weekDay2=WeekDay_2.MON;
System.out.println(weekDay2.name());//返回当前对象的名字
System.out.println(weekDay2.toString());//返回当前对象的toString
System.out.println(weekDay2.ordinal());//返回当前对象的排序
}
/**
* 枚举
* @author hui
*
*/
public enum WeekDay_2{
SUN,MON,TUS,WEN,THUR,FRI,SAT;//各个值之间用逗号隔开
}
}
分享到:
相关推荐
深入理解 Java 枚举(枚举的方法+枚举的特性+枚举可以实现接口+组织枚举+策略枚举+枚举工具类等)
java1.5新特性 枚举 问我文字大于20个字没问题吧?我曰:没问题,然后我凑了20个字~
java8详解资源合集电子档 1.Java8:Lambda序列化? 2.Java 8 lambda 最佳实践 3.Java8 lambda表达式10个示例 ...... 30.在Java 8下更好地利用枚举 31.在 Java 8 中避免 ...32.鲜为人知的Java8特性:泛化目标类型推断
自动装箱、拆箱 更优化的循环 可变长参数 枚举 静态引入 范型 Annotation(注解、注释)
JAVA5.0新特性讲解与例子 泛型 枚举等
java1.5之后的新特性: 1,枚举(enum) 作用:一般用于代表一组相同类型的常用常量。 原理:语法结构与java类的语法不一样,但是经过编译器编译之后产生的是一个class文件。该class文件经过反编译之后实际上是...
NULL 博文链接:https://zisefeiniao.iteye.com/blog/382689
以上的一些程序代码均为张老师课堂即兴发挥所写,也可以看出,张老师对JAVA特性的深刻理解能力!现在说说我对这些程序代码的理解,说实话,才开始听张老师讲的时候,我感觉很模糊的,但是当我真正理解了之后,觉得...
511.509.JAVA基础教程_枚举类与注解-jdk8新特性:类型注解(511).rar
计算机后端-Java-Java核心基础-第23章 枚举类与注解 17. jdk8新特性:类型注解.avi
计算机后端-Java-Java核心基础-第23章 枚举类与注解 16. jdk8新特性:可重复注解.avi
JDK5.0的新特性一、枚举类型generic-泛型自动解包装与自动包装的功能
jdk1.5以上版本中新增加的特性描述,带有代码例子让你很清晰的明白jdk的 常量 、枚举、 for each、反射等各种新的特性,相信需要的你,一定满足。
特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5章 高级类特性2 第6章 异常处理 第7章 Java集合 第8章 泛型 第9章 注解...
JDK1.5新特性:自动拆装箱、泛型、增强for循环、静态方法导入、可变参数、枚举
在Java SE 1.5版本中引入了泛型编程、类型安全的枚举、不定长参数和自动装/拆箱特性。太阳微系统对Java语言的解释是:“Java编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多...
本文介绍了Java 5中添加的语言特性--泛型、枚举、注释、自动装箱和增强的for循环--不需要修改JVM的指令集,几乎全部是在静态编译器和类库中实现的。对于不能使用Java 5语言特性的开发人员,有多种方法可以使他们使用...
特别适合新入门自学的新手同学,也适合老手回顾学习,巩固知识 第1章 Java语言概述 第2章 基本语法 第3章 面向对象编程 第4章 高级类特性1 第5章 高级类特性2 第6章 异常处理 第7章 Java集合 第8章 泛型 第9章 注解...
总结了包括for寻混,枚举,静态导入,泛型^