//弄明白了: Mon("Monday")相当于调用了enum的构造函数,传递monday过来,构造函数设置,用get来获取
Java Enum 学习
1. 关于 Java Enum:
学过 C/C++ 等语言的人,应该都对 Enum 类型略知一二。 Enum 一般用来表示一组相同类型的常量。如性别、日期、月份、颜色等。对这些属性用常量的好处是显而易见的,不仅可以保证单例,且比较时候可以用 ”==” 来替换 equals 。是一种好的习惯。 JDK1.5 之前没有 Enum 这个类型,那时候一般用接口常量来替代。有了 JavaEnum 之后,可以更贴近的表示这种常量。
2. 如何使用 Java Enum
简单的用法: JavaEnum 简单的用法一般用于代表一组常用常量,可用来代表一类相同类型的常量值。如:
性别:
public enum SexEnum {
male , female ;
}
颜色:
public enum Color {
RED , BLUE,GREEN,BLACK ;
}
枚举对象里面的值都必须是唯一的。
可以通过 Enum 类型名直接引用该常量,如 SexEnum.male,Color.RED.
复杂用法: Java 为枚举类型提供了一些内置的方法,同事枚举常量还可以有自己的方法。可以很方便的遍历枚举对象,看个下面的例子:
1. 代码一 WeekDay.java :
view plaincopy to clipboardprint?
/**
* @author yubing.linyb
* 2009.7.29
* 定义一个枚举类型,代表星期一到星期日的7个缩写常量
* 同时还定义了枚举类型的属性day,该属性可以是final,也可是变量
* 同时还定义了该枚举类型的一个方法printDay
*/
public enum WeekDay {
Mon("Monday"), Tue("Tuesday"), Wed("Wednesday"), Thu("Thursday"), Fri(
"Friday"), Sat("Saturday"), Sun("Sunday");
/**定义枚举类型自己的属性**/
private final String day;
private WeekDay(String day) {
this.day = day;
}
/**定义枚举类型自己的方法**/
public static void printDay(int i){
switch(i){
case 1: System.out.println(WeekDay.Mon); break;
case 2: System.out.println(WeekDay.Tue);break;
case 3: System.out.println(WeekDay.Wed);break;
case 4: System.out.println(WeekDay.Thu);break;
case 5: System.out.println(WeekDay.Fri);break;
case 6: System.out.println(WeekDay.Sat);break;
case 7: System.out.println(WeekDay.Sun);break;
default:System.out.println("wrong number!");
}
}
public String getDay() {
return day;
}
}
2. 代码二 WeekDayTest.java:
view plaincopy to clipboardprint?
/**
* @author yubing.linyb
* 2009.7.29
* 测试枚举类型WeekDay.
*/
public class WeekDayTest {
public static void main(String args[]) {
for (WeekDay day : WeekDay.values()) {
System.out.println(day + "====>" + day.getDay());
}
WeekDay.printDay(5);
}
}
输出结果为:
Mon====>Monday
Tue====>Tuesday
Wed====>Wednesday
Thu====>Thursday
Fri====>Friday
Sat====>Saturday
Sun====>Sunday
Fri
3. Java Enum 原理
Java Enum 类型的语法结构尽管和 java 类的语法不一样,应该说差别比较大。但是经过编译器编译之后产生的是一个 class 文件。该 class 文件经过反编译可以看到实际上是生成了一个类,该类继承了 java.lang.Enum<E>.
WeekDay (javap WeekDay 命令 之后得到的内容如下 ( 去掉了汇编代码 ) :
view plaincopy to clipboardprint?
public final class WeekDay extends java.lang.Enum{
public static final WeekDay Mon;
public static final WeekDay Tue;
public static final WeekDay Wed;
public static final WeekDay Thu;
public static final WeekDay Fri;
public static final WeekDay Sat;
public static final WeekDay Sun;
static {};
public static void printDay(int);
public java.lang.String getDay();
public static WeekDay[] values();
public static WeekDay valueOf(java.lang.String);
}
所以实际上 Enum 类型就是以 Java 类来实现的,没有什么新的特点,只不过 java 编译器帮我们做了语法的解析和编译。完全也可以自己实现。但是既然有这样方便一个东西,当然会去用了。
分享到:
相关推荐
java enum详细教程。由浅入深,包括基本语法方面..很适合新手学习。/n各位看官。绝对超值。
Java enum的用法详解,可作为开发api
Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类Java SE程序 Enum枚举类...
博文“Java 语言中 Enum 类型的使用介绍”的源码。
ava enum 枚举的spring boot2.x完美实现demo源码。java的枚举类型,可以理解为一种特殊的java类
java中enum枚举的详细用法。 0.0
static_enum::enum_cast可以像static_cast一样用于将枚举转换为字符串或从枚举创建字符串 static_enum::to_string从枚举变量获取名称,返回constexpr std::optional static_enum::from_string从字符串中获取枚举...
enum李兴华视频笔记,绝对值得看!
主要介绍了Java enum的用法详细介绍及实例代码的相关资料,需要的朋友可以参考下
Java中的Enum的使用与分析
例子# include " enum_conversions_macro.h "ENUM_CLASS (Day, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);int main (){// get enum sizestd::cout << " enum size: " <...
Java enum的用法详解
java enum枚举教程学习资料
NULL 博文链接:https://rensanning.iteye.com/blog/2013734
javaenum学习.pdf
主要介绍了Java Enum和String及int的相互转化示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
介绍选项为Enum和OptionSet类型提供功能,例如: 除了RawType rawValue外,还提供其他值类型能够在Enum和OptionSet类型之间互换对Codable OptionSet使用其他值类型 例子假设您有Enum类型: enum ...
java枚举类型的定义使用介绍,还有示例。