zoukankan      html  css  js  c++  java
  • Java 枚举常见7种用法

    用法一:常量

    在JDK1.5 之前,我们定义常量都是: publicstaticfianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

    Java代码 
    1. public enum Color {
    2. RED, GREEN, BLANK, YELLOW
    3. }

    用法二:switch

    JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

    Java代码 
    1. enum Signal {
    2. GREEN, YELLOW, RED
    3. }
    4. public class TrafficLight {
    5. Signal color = Signal.RED;
    6. public void change() {
    7. switch (color) {
    8. case RED:
    9. color = Signal.GREEN;
    10. break;
    11. case YELLOW:
    12. color = Signal.RED;
    13. break;
    14. case GREEN:
    15. color = Signal.YELLOW;
    16. break;
    17. }
    18. }
    19. }

    用法三:向枚举中添加新方法

    如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且 Java 要求必须先定义enum实例。

    Java代码 
    1. public enum Color {
    2. RED("红色", 1), GREEN("绿色",2), BLANK("白色",3), YELLO("黄色",4);
    3. // 成员变量
    4. private String name;
    5. private int index;
    6. // 构造方法
    7. private Color(String name, int index) {
    8. this.name = name;
    9. this.index = index;
    10. }
    11. // 普通方法
    12. public static String getName(int index) {
    13. for (Color c : Color.values()) {
    14. if (c.getIndex() == index) {
    15. return c.name;
    16. }
    17. }
    18. return null;
    19. }
    20. // get set 方法
    21. public String getName() {
    22. return name;
    23. }
    24. public void setName(String name) {
    25. this.name = name;
    26. }
    27. public int getIndex() {
    28. return index;
    29. }
    30. public void setIndex(int index) {
    31. this.index = index;
    32. }
    33. }

    用法四:覆盖枚举的方法

    下面给出一个toString()方法覆盖的例子。

    Java代码 
    1. public enum Color {
    2. RED("红色", 1), GREEN("绿色",2), BLANK("白色",3), YELLO("黄色",4);
    3. // 成员变量
    4. private String name;
    5. private int index;
    6. // 构造方法
    7. private Color(String name, int index) {
    8. this.name = name;
    9. this.index = index;
    10. }
    11. //覆盖方法
    12. @Override
    13. public String toString() {
    14. return this.index+"_"+this.name;
    15. }
    16. }

    用法五:实现接口

    所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类。

    Java代码 
    1. public interface Behaviour {
    2. void print();
    3. String getInfo();
    4. }
    5. public enum Colorimplements Behaviour{
    6. RED("红色", 1), GREEN("绿色",2), BLANK("白色",3), YELLO("黄色",4);
    7. // 成员变量
    8. private String name;
    9. private int index;
    10. // 构造方法
    11. private Color(String name, int index) {
    12. this.name = name;
    13. this.index = index;
    14. }
    15. //接口方法
    16. @Override
    17. public String getInfo() {
    18. return this.name;
    19. }
    20. //接口方法
    21. @Override
    22. public void print() {
    23. System.out.println(this.index+":"+this.name);
    24. }
    25. }

    用法六:使用接口组织枚举

    Java代码 
    1. public interface Food {
    2. enum Coffee implements Food{
    3. BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
    4. }
    5. enum Dessert implements Food{
    6. FRUIT, CAKE, GELATO
    7. }
    8. }

    用法七:关于枚举集合的使用

    java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的 key是enum类型,而value则可以是任意类型。关于这个两个集合的使用就不在这里赘述,可以参考JDK文档。

    关于枚举的实现细节和原理请参考:

    参考资料:《ThinkingInJava》第四版

    http://softbeta.iteye.com/blog/1185573

    Java枚举可以配合JSTL标签和Hibernate等技术组合使用,使用效果将大大增强,代码清晰可维护性高.

    转自:http://blog.csdn.net/shimiso/article/details/8231344

  • 相关阅读:
    Bean作用域
    处理自动装配的歧义
    IOC/DI 依赖注入
    Session管理
    JSP
    Jenkins(持续集成)Windows版本安装
    Jenkins安装插件提速(Windows)终极解决办法
    Jenkins(持续集成)Windows版本解决插件安装缓慢
    Please wait while Jenkins is getting ready to work...(Jenkins访问资源慢的问题)
    Spring Boot 小技巧
  • 原文地址:https://www.cnblogs.com/azhqiang/p/4635250.html
Copyright © 2011-2022 走看看