Java 小例子:如何使用 Enum Home » 编程开发 » Java 小例子:如何使用 Enum Java 在 1.5 以前,常量是个头疼的问题。因为一些参数只能取那么几个值,而从参数类型上又看不出来有哪些值可以取。从 1.5 开始 Java 引进了 Enum 枚举类型,并根据 Java 自身的特点将其进行了强化。实际上现在所有的常量都可以通过 Enum 来定义了。下面是一个例子,演示了 Enum 的基本用法,以及如何向 Enum 类型加入自定义属性。 import java.util.Calendar; /** * 演示如何使用 Enum */public class EnumValue { public static void main(String[] args) { // 演示如何使用 Weekday Weekday w = Weekday.Monday; System.out.println(“w = ” + w.toString()); System.out.println(“Monday compares to Friday = ” + Weekday.Monday.compareTo(Weekday.Friday)); System.out.println(“Enum value of /”Sunday/” is ” + Weekday.valueOf(“Sunday”)); try { System.out.println(“Enum value of /”AnotherDay/” is ” + Weekday.valueOf(“AnotherDay”)); // 这里将会抛出 IllegalArgumentException } catch (IllegalArgumentException e) { System.out.println(“exception: ” + e.getMessage()); } System.out.println(); // ——————————– // 演示如何使用 Month System.out.println(“The first month is ” + Month.Jan); System.out.println(“The full name of the first month is ” + Month.Jan.getFullName()); System.out.println(“The fifth month is ” + Month.valueByIndex(5).getFullName()); System.out.println(“Index of August is ” + Month.valueByFullName(“August”).getIndex()); System.out.println(“Now is ” + Month.thisMonth().getFullName()); }} /** * 一个表示星期几的 enum (这是一个简单的例子) */enum Weekday { Monday, Tuesday, Wednesday, Thirsday, Friday, Saturday, Sunday} /** * 一个表示月份的 enum (这是一个稍微复杂的例子) */enum Month { // 十二个月份 Jan(“January”), Feb(“Febrary”), Mar(“March”), Apr(“April”), May(“May”), June(“June”), July(“July”), Aug(“August”), Sept(“September”), Oct(“October”), Nov(“November”), Dec(“December”); // 全名 private String fullName; // 构造方法 Month(String fullName) { this.fullName = fullName; } public String getFullName() { return fullName; } // 获取当前 Enum 值是第几个月份。一月份则返回 1。 public int getIndex() { return ordinal() + 1; } // 根据月数获得 enum 对象 public static Month valueByIndex(int index) { for (Month month : Month.values()) { if (month.getIndex() == index) { return month; } } return null; } // 根据全名获得 enum 对象 public static Month valueByFullName(String fullName) { for (Month month : Month.values()) { if (month.getFullName().equals(fullName)) { return month; } } return null; } public static Month thisMonth() { // Calendar 的月份从 0 算起,而 Month 的月份从 1 算起 int index = Calendar.getInstance().get(Calendar.MONTH) + 1; return valueByIndex(index); }} 因为有了梦想,我们才能拥有奋斗的目标,