`
方XiRui
  • 浏览: 20342 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java枚举的七种常见用法

    博客分类:
  • JAVA
阅读更多

资料来源:http://blog.jobbole.com/31597/

JDK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。

用法一:常量

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

public enum Color {
    RED, GREEN, BLACK, YELLOW 
}

 

用法二:switch

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

enum Light {
    GREEN, YELLOW, RED
}

class TrafficLight {
    public void change(Light color) {
        switch (color) {
        case RED :
            color = Light.GREEN ;
            System.out.println(color) ;
            break ;
        case YELLOW :
            color = Light.RED ;
            System.out.println(color) ;
            break ;
        case GREEN :
            color = Light.YELLOW ;
            System.out.println(color) ;
            break ;
        }
    }
}

public class TrafficLightTest {
    public static void main(String[] args) {
        new TrafficLight().change(Light.RED) ;
    }
}

 

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

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

enum Color {
    RED("红色", 1),GREEN("绿色", 2),BLANK("黑色", 3),YELLO("黄色", 4) ;
     // 成员变量
   private String name ;
    private int index ;
 
    private Color (String name, int index) {
        this.name = name ;
        this.index = index ;
    }
    
    public static String getName(int index) {
        for (Color c : Color.values()) {
            if (c.getIndex() == index) {
                return c.name ;
            }
        }
        return null ;
    }    
    // get set 方法
    public String getName() {
        return name;
    }
    
    public void setName(String name) {
        this.name = name;
    }
    
    public int getIndex() {
        return index;
    }
    
    public void setIndex(int index) {
        this.index = index;
    }
}


public class ColorTest {
    public static void main(String[] args) {
        System.out.println(Color.getName(1)) ;
    }
}

 

用法四:覆盖枚举的方法

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

//覆盖方法
@Override
public String toString() {
    return this.index+"_"+this.name;
}

用法五:实现接口

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

public interface Behaviour {
    void print();
    String getInfo();
}
public enum Color implements Behaviour{
    RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
    // 成员变量
    private String name;
    private int index;
    // 构造方法
    private Color(String name, int index) {
        this.name = name;
        this.index = index;
    }
    //接口方法
    @Override
    public String getInfo() {
        return this.name;
    }
    //接口方法
    @Override
    public void print() {
        System.out.println(this.index+":"+this.name);
    }
}

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

public interface Food {
    enum Coffee implements Food{
        BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
    }
    enum Dessert implements Food{
        FRUIT, CAKE, GELATO
    }
}

 

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

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

关于枚举的实现细节和原理请参考:参考资料:《Thinking in Java》第四版

 

分享到:
评论

相关推荐

    Java枚举的七种常见用法.doc

    以下是对标题和描述中提及的Java枚举七种常见用法的详细说明: 1. 常量定义: 在Java中,枚举可以用来组织相关常量,提升代码的可读性和可维护性。例如,我们可以定义一个`Color`枚举,包含`RED`, `GREEN`, `BLANK`...

    Java枚举的七种常见用法总结(必看)

    下面是Java枚举的七种常见用法的详细说明: 1. 常量用法: 在Java中,枚举可以用于组织一组相关的常量。在JDK 1.5之前,我们通常使用`public static final`关键字来定义常量,但这种方式不够灵活。枚举提供了一种...

    JAVA枚举类型的用法详解

    下面我们将深入探讨Java枚举类型的常见用法。 首先,枚举类型在本质上等同于定义了一组静态常量。创建枚举类型的语法如下: ```java public enum Belle { para1, para2, para3, para4; } ``` 这会创建一个名为`...

    Java枚举(enum) 详解7种常见的用法

    以下将详细介绍7种常见的Java枚举用法: 1. **常量用法**: 在JDK 1.5之前,我们通常使用`public static final`关键字来定义常量。但自从引入枚举后,我们可以将相关联的常量组织到同一个枚举类型中,如`Color {...

    java枚举的一个例子

    ### Java枚举详解 在Java编程语言中,枚举(`enum`)是一种特殊的类,用于定义一组固定的常量值。这些常量值通常代表了一组预定义的选项或者状态,比如颜色、方向等。使用枚举可以提高代码的可读性和可维护性,并且...

    通过枚举反向给实体类赋值

    首先,我们需要理解枚举的常见用法。枚举类型定义如下: ```java public enum Color { RED("红色"), GREEN("绿色"), BLUE("蓝色"); private String desc; Color(String desc) { this.desc = desc; } ...

    枚举类型在switch语句中的用法

    ### 枚举类型在switch语句中的用法 在编程语言中,枚举(Enum)是一种数据类型,它由一组固定的常量组成,通常用于表示有限的预定义值集。枚举类型的使用可以让代码更加清晰易读,并且有助于减少错误的发生。在本篇...

    Java enum的用法详解.docx

    下面我们将详细探讨Java enum的四种常见用法。 1. 定义常量: 在Java 1.5之前,我们通常使用`public static final`关键字来定义常量,但这种方式存在一些局限。枚举提供了一种将相关常量分组的方式,例如定义颜色:...

    Java SE完整版精品优质课件 自学入门必看的优秀Java基础知识培训教案 第09章_枚举&注解(共22页).pptx

    枚举是Java 1.5引入的一种新类型,它允许开发者定义一组相关的值,这些值是该枚举类型的实例。在Java中,枚举类是一种特殊的类,它们默认继承自`java.lang.Enum`类,且具有以下特点: 1. 枚举类的实例必须在枚举类中...

    java enum 枚举的spring boot2.x完美实现demo源码

    在Java编程语言中,枚举(`enum`)是一种强大的工具,它允许我们定义一组预定义的常量。在Spring Boot 2.x框架中,枚举的使用可以帮助我们更好地管理和组织代码,提供类型安全和可读性。本篇将深入探讨如何在Spring ...

    java调用chrome浏览器内核cef实现,非jxbrowser

    Java调用Chrome浏览器内核是开发桌面应用时一个常见的需求,尤其在需要嵌入Web页面或者与Web内容交互的场景下。CEF(Chromium Embedded Framework)是一个开源项目,它允许开发者将Google Chrome的Blink渲染引擎和V8...

    常见的java笔试题

    Java是一种广泛使用的面向对象的编程语言,其设计目标是具有高度的可移植性、健壮性和安全性。在Java笔试题中,通常会涵盖以下几个核心领域: 1. **基础语法**:包括类、对象、接口、继承、多态、封装等概念。理解...

    BTA 面试-Java常见面试题及答案.pdf

    Java集合框架提供了一些常用的集合类,如ArrayList、LinkedList、Vector、HashMap、TreeMap等等,每种集合类都有其特点和用法。 十二、Java IO和NIO Java IO是Java的输入/输出流处理机制,NIO是Java的非阻塞IO机制...

    Java企业级项目常见API基本原理和演示 Java学习资料

    8. **枚举**:Java枚举类型提供了强类型的安全性,可以用于替代传统的整数常量或字符串常量,使代码更加清晰和可维护。 9. **设计模式**:了解和应用单例、工厂、观察者、装饰器、适配器、策略等经典设计模式,有助...

    c# java互相转换工具

    4. 枚举和注解:C#的枚举和Java的枚举类在用法上有所不同,注解在Java中比C#更常见。转换时需考虑这些特性。 5. 面向接口编程:Java鼓励使用接口,而C#允许单继承和接口实现。转换时,需要根据设计模式和目标语言的...

    JAVA基础,常见java基础问题(1).zip

    8. **枚举与注解**:枚举是Java中的一种特殊类,常用于定义固定数量的值。注解是一种元数据,可以为编译器和JVM提供信息,例如用于自动生成代码、验证配置等。 9. **反射机制**:Java反射机制允许在运行时动态地...

    java操作HID USB设备

    Java操作HID(Human ...为了进一步了解和使用这个"封装好的API",你需要查阅HID_API的官方文档,理解它的API接口、示例代码和常见用法。同时,进行实际的设备交互测试,以便更好地掌握这个库的工作原理和限制。

    Compare用法Compare用法Compare用法

    在编程领域,`Compare`是一个常见的操作,用于比较两个对象或者值。这个操作在很多编程语言中都有体现,如C#、VB.NET、Java、JavaScript等。本文将深入探讨`Compare`的用法,以及在不同语言中的实现和应用。 在C#中...

    java学习笔记markdown

    11. **枚举与注解**:介绍Java中的枚举类型及其用法,以及注解的定义和应用,它们在现代Java开发中有着广泛的应用。 12. **Java 8及更高版本的新特性**:涵盖Lambda表达式、函数式编程、Stream API、日期时间API等...

Global site tag (gtag.js) - Google Analytics