zoukankan      html  css  js  c++  java
  • Java枚举类Enum

    1,概述

    • JDK1.5引入了新的类型——枚举。

    • 枚举是一个特殊的class

    • 这个class相当于final static修饰,不能被继承

    • 它的构造方法强制被私有化,即枚举类不能实例化

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

    • 每个枚举变量都是枚举类的实例

    • 每个成员变量都是final static修饰

    2,用法用例

    2.1 先来看一个简单枚举类

    public enum Color {
        RED, BLANK, YELLOW, GREEN, CYAN, BLUE
    }

    从上面的定义形式来看,似乎 Java 中的枚举类型很简单,但实际上 Java 语言规范赋予枚举类型的功能非常的强大,它不仅是简单地将数值转换成对象,而是将枚举类型定义转变成一个完整功能的类定义。这种类型定义的扩展允许开发者给枚举类型增加任何方法和属性,也可以实现任意的接口。另外,Java 平台也为 Enum 类型提供了高质量的实现,比如默认实现 Comparable 和 Serializable 接口,让开发者一般情况下不用关心这些细节。

    初学者在开发中一般定义常量都是: public static fianl...。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里。

    2.2 实际项目运用

    假如我项目开发中有一个订单模块,订单有多种状态,如待付款,待发货,待收货,待评价等。

    我们在数据库建表时并不会直接存放这些文字说明或者英文字段,而是会用数字编码代替(好处:内存占用少,sql查询条件易于编写)

    另外用枚举类把状态码和具体含义绑定,如0--待付款,1--待发货,2--待收货,3--待评价

    代码实现:

    import com.baomidou.mybatisplus.annotation.EnumValue;
    import sog.framework.models.enums.SogBaseEnum;
    
    
    public enum StatusEnum{
        /**
         * PAYMENT:待付款,SHIPMENTS:待发货,RECEIVING:待收货,EVALUATE:待评价
         */
        PAYMENT("0", "待付款"),
        SHIPMENTS("1", "待发货"),
        RECEIVING("2", "待收货"),
        EVALUATE("3", "待评价"),
        ;
    
        // 存入到数据库中的值
        @EnumValue
        private String code;
    private String name; AssetStatusEnum(String code, String name) { this.code = code; this.name = name; } @Override public String getCode() { return this.code; } @Override public String getName() { return this.name; } // 输出到页面的值 @Override public String toString() { return this.getName(); } }

    代码分析:

    • 首先枚举实例结束后要以分号(“;”)分割

    • 之后可以定义一些属性和方法,每一个枚举实例就相当于一个当前类的对象实例

    2.3 枚举的其他用法

    单例模式

    具体原理可仔细查看文章开头关于枚举类的概述

  • 相关阅读:
    几张图就把 Kubernetes Service 掰扯清楚了
    一文读懂 Kubernetes APIServer 原理
    K8S调度系统由浅入深系列:简介
    K8S蓝绿部署:Blue/Green Deployments on Kubernetes
    K8s Nginx Ingress 介绍
    探索 Kubernetes HPA
    [译]走进Kubernetes集群的大脑:Etcd
    AIX文件系统大小限制调整(转)
    修改SSH服务监听端口,引起服务启动失败原因分析
    Docker-compos部署nextcloud私有网盘
  • 原文地址:https://www.cnblogs.com/zhulei2/p/13410671.html
Copyright © 2011-2022 走看看