美文网首页
Java的枚举类型Enum

Java的枚举类型Enum

作者: 李2牛 | 来源:发表于2018-07-17 10:39 被阅读0次

有这么一个场景,需要枚举HTTP的请求方法,这个时候最简单的处理方法是

public class RequestTypeConstants {
    public static final int POST = 0; 
    public static final int HEAD = 1; 
    public static final int GET = 2; 
    public static final int PUT = 3; 
    public static final int UPDATE = 4; 
    public static final int DELETE = 5; 
    public static final int CONNECT = 6; 
    public static final int TRACE = 7;
}

这种定义常量的方式缺陷是

  1. 容易出错
    请求参数可能会被赋值一个毫无意义的常数,比如8
  2. 没有命名空间
    所有的HTTP请求方法必须通过类来访问
  3. 一致性差
    整型的枚举方法是编译期常量,编译完成之后,所有服务端和客户端引用的地方会将整型数值直接写入,如果这个常量枚举的类中的常量发生变化,所有的引用地方的代码都需要重新编译。
  4. 类型与实际的意义差距较大。
    调试期间直接看到数字,很难看出来具体指的是哪一个请求方法。

使用枚举类


public enum RequestTypeConstant {
    POST("POST"),
    GET("GET"),
    HEAD("HEAD"),
    PUT("PUT"),
    UPDATE("UPDATE"),
    DELETE("DELETE"),
    CONNECT("CONNECT"),
    TRACE("TRACE");

    private String string;

    RequestTypeConstant(String string) {
        this.string = string;
    }

    public String getString() {
        return string;
    }
}

使用枚举类型的优势

  1. 默认实现Comparable接口和Serializable接口
  2. 扩大switch语句的使用范围
  3. 可拓展性强,能够实现任意接口以及定义任何方法和属性

避免错误使用枚举类型

  1. enum 类型不支持 public 和 protected 修饰符的构造方法,因此构造函数一定要是 private 或 friendly 的。也正因为如此,所以枚举对象是无法在程序中通过直接调用其构造方法来初始化的。
  2. 定义 enum 类型时候,如果是简单类型,那么最后一个枚举值后不用跟任何一个符号;但如果有定制方法,那么最后一个枚举值与后面代码要用分号;隔开,不能用逗号或空格。
  3. 由于 enum 类型的值实际上是通过运行期构造出对象来表示的,所以在 cluster 环境下,每个虚拟机都会构造出一个同义的枚举对象。因而在做比较操作时候就需要注意,如果直接通过使用等号 == 操作符,这些看似一样的枚举值一定不相等,因为这不是同一个对象实例。

相关文章

  • 枚举

    枚举 wiki Java的枚举类型用法介绍 深入理解Java枚举类型(enum) 为什么要用enum? 学习计划 ...

  • Java枚举

    枚举 普通方式定义(int枚举模式) 枚举方式 Enum抽象类常见方法 Enum是所有 Java 语言枚举类型的公...

  • Java编程思想---枚举类型

    Java编程思想---枚举类型 基本enum特性 调用enum的values()方法,可以遍历enum实例,val...

  • Java枚举

    枚举类型(enum type)是指由一组固定的常量组成合法的类型。Java中由关键字enum来定义一个枚举类型。 ...

  • 枚举资料笔记

    概念:被enum关键字修饰的类型就是枚举类型,枚举类型都隐式继承Enum,根据java不可以多继承的原理,不能再继...

  • enum(枚举)

    创建枚举类型要使用 enum 关键字,隐含了所创建的类型都是 java.lang.Enum 类的子类(java.l...

  • java基础

    JAVA基础 基本类型 enum 枚举Size { SMALL , MEDIUM , LARGE , EXTRA ...

  • Java 枚举类型 enum

    以下使用 JDK 版本为:1.8.0_121 枚举类型的引入 枚举类型是 Java 5 中增加的一个小特性,在此之...

  • 深入理解枚举类型

    枚举 Java的枚举类型,关键字enum,全称为 enumeration,从Java 5.0 开始提供了的一种新类...

  • 枚举学习

    java enum枚举类 enum(枚举)类介绍 **java枚举类是一组预定义常量的集合,使用enum关键字声明...

网友评论

      本文标题:Java的枚举类型Enum

      本文链接:https://www.haomeiwen.com/subject/dthwpftx.html