Java枚举
来源:互联网 发布:java web有什么好书 编辑:程序博客网 时间:2024/06/05 12:10
1- 什么是Java枚举
2- 可以使用==操作符来比较枚举的元素
3- 枚举在Java可以被用来作switch语句的参数
4- 获取枚举的元素
5- 枚举可以有构造函数和方法
6- 覆盖枚举方法
7- 枚举抽象方法
2- 可以使用==操作符来比较枚举的元素
3- 枚举在Java可以被用来作switch语句的参数
4- 获取枚举的元素
5- 枚举可以有构造函数和方法
6- 覆盖枚举方法
7- 枚举抽象方法
1- Java枚举(Enum)是什么?
枚举(enum)是Java的一个关键字,它用于表示在Java中公知的值的固定个数的特征,例如一周的天数,太阳系中的行星数量等。枚举(枚举)是在Java JDK 1.5中引入的,它的自动装箱和拆箱,泛型,可变参数和静态导入的J2SE 5最喜欢的功能之一。现在我们看来在枚举存在之前,Java在特定的情况下所做的:
- WeekDayConstants.java
package yiibai.tutorial.beforej5;// This class defines the constants are the days of the week.public class WeekDayConstants { public static final int MONDAY = 2; public static final int TUESDAY = 3; public static final int WEDNESDAY = 4; public static final int THURSDAY = 5; public static final int FRIDAY = 6; public static final int SATURDAY = 7; public static final int SUNDAY = 1;}
用类的方法返回在一周中每一天具体要做的作业。 (时间表的那种)。
- Timetable.java
package com.yiibai.tutorial.beforej5;public class Timetable { // Returns name of Job will do public static String getJob(int dayInWeek) { if (dayInWeek == WeekDayConstants.SATURDAY || dayInWeek == WeekDayConstants.SUNDAY) { return "Nothing"; } return "Coding"; }}
- 没有类型安全:首先,它不是类型安全的;您可以指定任何有效的int值到dayInWeek
- 任何有意义的打印:任何这些常数的值被打印,而不是打印一个有意义的名称,其数值就是当您打印MONDAY会打印出“2”,而不是“MONDAY”
见Java 5中代码:
- WeekDay.java
package com.yiibai.tutorial.javaenum;public enum WeekDay { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;}
- Timetable.java
package com.yiibai.tutorial.javaenum;public class Timetable { public static String getJob(WeekDay weekDay) { if (weekDay == WeekDay.SATURDAY || weekDay == WeekDay.SUNDAY) { return "Nothing"; } return "Coding"; }}
2- 可以使用==操作符来比较枚举元素
枚举就像类,接口的参考对象,但它也可以使用==操作
让我们看看参考对象是如何比较的。
// To compare the reference object, generally used method equals (..)Object obj1 = .... ;// Comparing object with null, can use the == operatorif(obj1 == null) { }Object obj2 = ....;// Not nullif (obj1 != null) { // Comparing two objects. if(obj1.equals(obj2)) { }}
使用枚举,你可以使用==操作符来比较。
- CompareEnumDemo.java
package com.yiibai.tutorial.javaenum;public class CompareEnumDemo { public static void main(String[] args) { WeekDay today = WeekDay.SUNDAY; // Use the == operator to compare two elements of Enum if (today == WeekDay.SUNDAY) { System.out.println("Today is Sunday"); } }}
3- 枚举在Java中可以用来作为switch语句的参数
就像基本数据类型 (int, float, ..) 枚举可以用作在switch语句的参数。
让我们来看一个例子:
- SwitchDemo.java
package com.yiibai.tutorial.javaenum;public class SwitchDemo { public static void main(String[] args) { WeekDay day = WeekDay.THURSDAY; switch (day) { case MONDAY: System.out.println("Working day"); break; case SATURDAY: case SUNDAY: System.out.println("Holiday"); break; default: System.out.println(day); } }}
4- 获取枚举的元素
我们可以提取枚举的所有元素,使用values ()方法。参见下面的例子:
- ValuesDemo.java
package com.yiibai.tutorial.javaenum;public class ValuesDemo { public static void main(String[] args) { // Get all the elements of the Enum. WeekDay[] allDays = WeekDay.values(); for (WeekDay day : allDays) { System.out.println("Day: " + day); } }}
运行示例的结果:
Day: MONDAYDay: TUESDAYDay: WEDNESDAYDay: THURSDAYDay: FRIDAYDay: SATURDAYDay: SUNDAY
5- 枚举可以有构造函数和方法
枚举可以有构造函数和方法。仅构造初始化枚举内的对象,外部不能调用。我们看到一个例证:
- Gender.java
package com.yiibai.tutorial.javaenum;public enum Gender { // Initialize the elements from Constructor. // The element is always final, static MALE("M", "Male"), FEMALE("F", "Female"); private String code; private String text; // Constructor of Enum internal use only // Modifier of constructor is private // If you do not declare private, java alway understand is private. private Gender(String code, String text) { this.code = code; this.text = text; } // Static method return Gender by code. public static Gender getGenderByCode(String code) { for (Gender gender : Gender.values()) { if (gender.code.equals(code)) { return gender; } } return null; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getText() { return text; } public void setText(String text) { this.text = text; }}
- GenderDemo.java
package com.yiibai.tutorial.javaenum;public class GenderDemo { public static void main(String[] args) { Gender marryGender = Gender.FEMALE; System.out.println("Code: " + marryGender.getCode()); System.out.println("Text: " + marryGender.getText()); // Gender[]. for (Gender gender : Gender.values()) { System.out.println(gender.getText()); } String code ="M"; Gender gender= Gender.getGenderByCode(code); System.out.println("Gender by code: "+ gender); }}
运行示例的结果:
Code: FText: FemaleMaleFemaleGender by code: MALE
6- 覆盖枚举方法
可以重写继承自Object类的 toString() 方法。
- Currency.java
package com.yiibai.tutorial.javaenum;public enum Currency { VND, USD, EURO ; @Override public String toString() { if (this == VND) { return "Dong"; } else if (this == USD) { return "Dola"; } return super.toString(); } public static void main(String[] args) { Currency money = Currency.USD; System.out.println("Money " + money); System.out.println("Money " + money.toString()); System.out.println("VND " + Currency.VND); System.out.println("EURO " + Currency.EURO); }}
运行示例的结果:
Money DolaMoney DolaVND DongEURO EURO
7- 在枚举抽象方法
- Color.java
package com.yiibai.tutorial.javaenum;public enum Color { RED("red") { @Override public String getHexCode() { return "#ff0000"; } }, GREEN("green") { @Override public String getHexCode() { return "#00ff00"; } }, BLUE("blue") { @Override public String getHexCode() { return "#0000ff"; } }; private String name; Color(String name) { this.name = name; } public String getName() { return name; } public abstract String getHexCode();}
0 0
- JAVA 枚举
- java枚举
- java枚举
- Java 枚举
- Java 枚举
- Java 枚举
- java 枚举
- java 枚举
- java枚举
- java枚举
- java枚举
- java枚举
- Java枚举
- java枚举
- java 枚举
- java枚举
- Java枚举
- Java枚举
- 贪吃蛇的Java实现
- 51nod 1138 连续整数的和
- hdu 2059 龟兔赛跑
- Java修饰符
- 简单理解单例模式
- Java枚举
- V1.0.0 Python可以做什么
- 35 个快速学习编程的好去处
- mysql MYISAM INNODB 引擎比较
- RecyclerView的使用
- 关于Hibernate4与Hibernate3创建SessionFactory的的细微区别
- 小笔记
- 35 个快速学习编程的好去处
- Java注解