`

Java 小例子:如何使用 Enum

阅读更多
Java 在 1.5 以前,常量是个头疼的问题。因为一些参数只能取那么几个值,而从参数类型上又看不出来有哪些值可以取。从 1.5 开始 Java 引进了 Enum 枚举类型,并根据 Java 自身的特点将其进行了强化。实际上现在所有的常量都可以通过 Enum 来定义了。下面是一个例子,演示了 Enum 的基本用法,以及如何向 Enum 类型加入自定义属性。
<!--<br /> <br /> Code highlighting produced by Actipro CodeHighlighter (freeware)<br /> http://www.CodeHighlighter.com/<br /> <br /> --> 1 import java.util.Calendar;
 2  
 3 /**
 4  * 演示如何使用 Enum
 5  */
 6 public class EnumValue {
 7  
 8     public static void main(String[] args) {
 9  
10         // 演示如何使用 Weekday
11         Weekday w = Weekday.Monday;
12         System.out.println("w = " + w.toString());
13         System.out.println("Monday compares to Friday = "
14                 + Weekday.Monday.compareTo(Weekday.Friday));
15  
16         System.out.println("Enum value of \"Sunday\" is " + Weekday.valueOf("Sunday"));
17  
18         try {
19             System.out.println("Enum value of \"AnotherDay\" is "
20                     + Weekday.valueOf("AnotherDay")); // 这里将会抛出 IllegalArgumentException
21         } catch (IllegalArgumentException e) {
22             System.out.println("exception: " + e.getMessage());
23         }
24         System.out.println();
25  
26         // --------------------------------
27         // 演示如何使用 Month
28         System.out.println("The first month is " + Month.Jan);
29         System.out.println("The full name of the first month is " + Month.Jan.getFullName());
30         System.out.println("The fifth month is " + Month.valueByIndex(5).getFullName());
31         System.out.println("Index of August is " + Month.valueByFullName("August").getIndex());
32         System.out.println("Now is " + Month.thisMonth().getFullName());
33     }
34 }
35  
36 /**
37  * 一个表示星期几的 enum (这是一个简单的例子)
38  */
39 enum Weekday {
40     Monday, Tuesday, Wednesday, Thirsday, Friday, Saturday, Sunday
41 }
42  
43 /**
44  * 一个表示月份的 enum (这是一个稍微复杂的例子)
45  */
46 enum Month {
47  
48     // 十二个月份
49     Jan("January"),  Feb("Febrary"),   Mar("March"),
50     Apr("April"),    May("May"),       June("June"),
51     July("July"),    Aug("August"),    Sept("September"),
52     Oct("October"),  Nov("November"),  Dec("December");
53  
54     // 全名
55     private String fullName;
56  
57     // 构造方法
58     Month(String fullName) {
59         this.fullName = fullName;
60     }
61  
62     public String getFullName() {
63         return fullName;
64     }
65  
66     // 获取当前 Enum 值是第几个月份。一月份则返回 1。
67     public int getIndex() {
68         return ordinal() + 1;
69     }
70  
71     // 根据月数获得 enum 对象
72     public static Month valueByIndex(int index) {
73         for (Month month : Month.values()) {
74             if (month.getIndex() == index) {
75                 return month;
76             }
77         }
78         return null;
79     }
80  
81     // 根据全名获得 enum 对象
82     public static Month valueByFullName(String fullName) {
83         for (Month month : Month.values()) {
84             if (month.getFullName().equals(fullName)) {
85                 return month;
86             }
87         }
88         return null;
89     }
90  
91     public static Month thisMonth() {
92         // Calendar 的月份从 0 算起,而 Month 的月份从 1 算起
93         int index = Calendar.getInstance().get(Calendar.MONTH) + 1;
94         return valueByIndex(index);
95     }
96 }
分享到:
评论

相关推荐

    JAVA高级编程中Enum枚举

    java高级编程 Enum枚举 包括枚举的例子,问题 及一些文档,是复习的好资源

    java Enum EnumMap 简单例子

    简单查询算法,供学习参考。 代码中描述了Enum和EnumMap类的使用。

    在Android中使用Anntation来代替ENUM的方法

    众所周知,在Android 开发中是不推荐使用java 中的ENUM 来编程的。因为ENUM 中每一个value 都会是一个Object 对象。跟常量的int和String 相比,占用的内存要大的多。 那么,如果我们在定义一些常量的时候,如何限制...

    C++大学教程,一本适合初学者的入门教材(part2)

    1.9 Java、Internet与万维网 1.10 其他高级语言 1.11 结构化编程 1.12 典型C++环境基础 1.13 C++与本书的一般说明 1.14 C++编程简介 1.15 简单程序:打印一行文本 1.16 简单程序:两个整数相加 1.17 内存的...

    java枚举实例代码

    java枚举小例子,简单了解枚举的用法,适合初学者使用。

    Java 基础枚举.pdf

    在Java中,定义枚举使用enum关键字,其基本语法结构如下: 其中,EnumName表示枚举类型的名称,CONSTANT1、CONSTANT2、……、CONSTANTN表示枚举类型中的常量值。每个常量值都必须是合法的标识符,通常使用大写字母...

    jdk-7-window-64

    try-with-resources,之前使用的很多IO操作都需要手动去关闭流,现在使用这种方式,只要是实现了java.lang.AutoCloseable和java.io.Closeable的类就不需要再手动关闭了。 例子:try(OutputStream out=new ...

    10分钟带你理解Java中的弱引用

    将带大家快速理解Java中弱引用,文章介绍的很详细,对大家学习Java很有帮助哦,有需要的可以参考借鉴。

    Java实现Map集合二级联动示例

    Java实现Map集合二级联动示例中国省市例子

    Java 高级特性.doc

    下面是使用 @SuppressWarnings 来取消 deprecation 警告的一个例子: public class Test { @Deprecated //在eclipse下运行的时候,方法名上会加一横线 public static void sayHello() { } } public class Test...

    微博客户端APIweiboclient4j.zip

    更多的使用例子可以参考 weiboclient4j.examples.OAuth2CommandLine API参数对象化 WeiboClient里面,大部分的方法都没有Javadoc,取而代之的是大部分的参数都是特定的对象,这样做的原因是因为: 写Javadoc太...

    阿里巴巴编码规范 基础技能认证 考题分析(考题+答案).docx

    关于基本数据类型与包装数据类型的使用标准,下列哪些说法符合《阿里巴巴Java开发手册》:ABD A .所有的POJO类属性必须使用包装数据类型。 B .RPC方法的返回值和参数必须使用包装数据类型。 C .因为JAVA的自动...

    Java开发技术大全 电子版

    11.2.8枚举(Enum)使用示例355 11.2.9枚举集(EnumSet)使用示例358 11.3常用算法361 11.3.1Collections中的简单算法361 11.3.2排序362 11.3.3二分查找364 11.4遗留的类和接口366 11.4.1Enumeration接口简介...

    java语言程序设计 java编程笔记 由浅入深的笔记 共32份 全套资源.rar

    return语句的例子.docx Scanner和if语法.docx static.docx 毕向东视频的笔记.docx 参数传递.docx 第二周所学总结.docx 反射机制.docx 泛型.docx 封装和继承以及多态部分.docx 接口和抽象类以及实现类.docx 枚举enum....

    枚举(switch、覆盖枚举、实现接口等)

    用法六:使用接口组织枚举 public interface Food { enum Coffee implements Food{ BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO } enum Dessert implements Food{ FRUIT, CAKE, GELATO } }

    i18n-maven-plugin:构建时Java本地化检查器

    这个想法是在Java代码中使用一些标记(@Annotations)来提供有关已定义的本地化消息的信息。 然后在构建时,maven插件将使用此信息来分析和检查代码文件和属性文件是否同步。 简单的例子 (这是 ): // Messages...

    在一小时内学会 C#(txt版本)

    和 C++ 一样,C# 是大小写敏感的。半角分号(;)是语句分隔符。和 C++ 有所区别的是,C# 中没有单独的声明(头)和实现(CPP)文件。所有代码(类声明和实现)都放在扩展名为 cs 的单一文件中。 看看 C# 中的 Hello...

    C++大学教程,一本适合初学者的入门教材(part1)

    1.9 Java、Internet与万维网 1.10 其他高级语言 1.11 结构化编程 1.12 典型C++环境基础 1.13 C++与本书的一般说明 1.14 C++编程简介 1.15 简单程序:打印一行文本 1.16 简单程序:两个整数相加 1.17 内存的...

    reconstant:在编程语言之间共享常量定义,并使常量再次常量

    支持的输出包括C / CPP头文件,Python3(使用enum模块),Python2,Javascript,VueMixins和Java。 这仍然是一个在制品。 可以在github上打开有问题的问题,或者在PR上支持其他语言。 例子 创建一个输入文件 test....

    enumerables:具有代表“未知”值的能力的Java枚举,非常适合稳定的API

    可枚举可枚举与标准Java Enum类型相似,但具有解析“尚不知道”值的附加功能。 如果您尝试构建稳定的API,它们将无价之宝。获取图书馆将以下依赖项添加到您的项目中,或 下载。 &lt; dependency&gt; &lt; groupId&gt;nl....

Global site tag (gtag.js) - Google Analytics