Java Enum 枚举详解

实体类中使用枚举类作为字段类型,前后端数据库类型转换的方法 分析: 在开发过程中,碰到枚举类型的字段,比如人的性别,用户的状态,订单的状态,我们往往在数据库层中使用数字 1、2等来存储数据。 在后端实体定义时,字段类型使用数字类型。使用这种方法,需要对前端传来的数据进行合法性校验,业务代码上比较啰嗦,所以使用枚举类来定义字段类型为更好的选择。 但是在一个实体类中使用枚举类型,有两个问题: 1、前端传来的参数,如何反序列化构造这个实体,如何构造实体中的这个枚举类。 2、后端使用的这个实体,如何保存到数据库中。 常见的实体类中的类型String对应数据库中的varcha 阅读详情

在某些情况下,一个类的对象是有限而固定的。比如季节类,它只有4个属性。像这种实例有限且固定的类,被称为枚举类。没错,它仍然是一个类,具有类所有的特性。
下面就开始创建一个枚举类吧:

**

  • 无法创建枚举文件的问题

**

new>Enum
哎呀,结果发现创建的时候无法创建(如果你用的是eclipse),如下图:
这里写图片描述
这是因为Eclipse可以指定编译深度,默认值为1.4,而枚举是在jdk1.5之后出现的。需要去修改:Project>proterties>Java Compiler。然后去修改,如图:
这里写图片描述
然后应用ok。

接下来创建一个Colo枚举类,有三个实例对象

public enum Color {
    RED,GREEN,BLUE;
}

在枚举类中有三个实体类对象。
1.而且它们只能被写在第一行,否则这些实体对象无效。
2.枚举类继承的是Enum类,不可以显示去继承其它类,而Enum类实现了Serializable和Comparable接口
3.如果枚举类是非抽象的,那么它不能被继承

  • switch语句同样提供了对枚举类的支持:
public class Test {
    public static void main(String[] args) {
        //调用test方法并传递BLUE对象
        test(Color.BLUE);
    }
    /**
     * 
     * @param c 枚举类对象
     */
    public static void test(Color c) {
        switch (c) {
        case RED:
            System.out.println("红");
            break;
        case BLUE:
            System.out.println("蓝");
            break;
        case GREEN:
            System.out.println("绿");
            break;
        default:
            break;
        }
    }

}

可以看出,在switch语句中,可以直接写对象名称,不用通过类名点出。
**

  • 枚举类也是类

**
枚举类也是一种类,里面同样可以有成员变量、方法、构造方法。

  • 枚举类中成员变量:
public enum Color {
    RED,GREEN,BLUE;
    public String name;
}

使用:

public class Test {
    public static void main(String[] args) {
        Color.BLUE.name="蓝色";
        System.out.println(Color.BLUE.name);
    }

}

输出:蓝色
和普通类对象的用法没有区别。

  • 成员方法:
public enum Color {
    //三个实体类对象
    RED,GREEN,BLUE;
    //成员变量
    public String name;

    /**
     * 成员方法
     * @param str
     */
    public void eat(String str){
        System.out.println(str);
    }
}

调用:

public class Test {
    public static void main(String[] args) {
        Color.BLUE.eat("不能吃");
    }

}
  • 构造方法
public enum Color {
    //三个实体类对象,此处的枚举值,必须调用构造方法来创建(因为只有一个构造方法)
    RED("红色"),GREEN("绿色"),BLUE("蓝色");
    //成员变量
    public String name;
    //有参构造方法
    private Color(String name) {
        this.name = name;
    }

    /**
     * 成员方法
     * @param str
     */
    public void eat(String str){
        System.out.println(str);
    }
}

和普通类一样,写了什么构造方法,就只能用哪个构造方法。

  • 枚举类实现接口
public enum Color implements Runnable{
    //三个实体类对象,此处的枚举值,必须调用构造方法来创建(因为只有一个构造方法)
    RED,GREEN,BLUE;
//重写接口的方法
    @Override
    public void run() {


    }
}

可以看到,和普通类的继承没什么区别,但是每个对象所执行的重写的方法都是一样的,做的事情也就是一样的。很多情况下,我们的需求是不同的对象,处理不同的数据,那就要分别去重写这些方法。

public enum Color implements Runnable{
    //这是一个通过匿名内部类得到的对象
    RED{

        @Override
        public void run() {
            System.out.println("红光");

        }

    }
    ,GREEN{

        @Override
        public void run() {
            System.out.println("绿光");

        }

    }
    ,BLUE{

        @Override
        public void run() {
            System.out.println("蓝光");

        }

    };
}

这个时候的枚举类Color并没有重写接口的抽象方法,那么Color就是一个抽象的枚举类,可以通过子类对象获得具体实例。

调用:

public class Test {
    public static void main(String[] args) {
        Color.BLUE.run();
    }

}

输出:蓝光

专门用来保存枚举实体类对象的集合有EnumSet和EnumMap。
总之,枚举也是类。就好像正方形也是矩形一样。

java enum枚举详解 说法是否正确enum底层基于✅完全正确所有枚举都隐式继承Enum<E>✅ 是name和ordinal来自Enum类✅ 是开发者不能手动继承Enum✅ 是(语言禁止)枚举仍是“类”,只是特殊语法✅ 是enum关键字的本质,就是 Java 提供的一种“安全、简洁、功能完整”的方式,来创建继承自的常量类。这就是 Java 枚举既简单又强大的秘密 🌟这是一个非常深刻的问题!你已经触及了 Java 语言设计的核心安全机制。问题答案能否手动?❌不能,编译器禁止为什么禁止? 阅读详情

相关推荐

枚举类型enum用法赋值

枚举常量是一种枚举类型中的值,及枚举值,枚举类型是由用户自定义的,只用用户在程序中定义它才能被使用。创建一个枚举类型的基本语法: enum 枚举类型名{ 枚举值1,枚举值2,… } 枚举类型名是由用户自定义的,同时枚举值通常都会用大写,多个枚举值之间用逗号隔开。例如:

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 2337

【Java枚举enum】--- 基本使用

Java基础之枚举

qq_44397508的博客 1868

SOPHGO SG2000/SG2002 AI SoC异构架构解析与应用

异构计算架构通过整合不同指令集核心(如RISC-V、Arm和8051)实现性能与功耗的平衡,是现代嵌入式系统和AIoT设备的关键技术。其原理是根据任务特性分配至最适合的计算单元,例如通用计算使用高性能核心,实时任务交由专用核心处理。这种架构在智能视觉、工业检测等场景具有显著优势,能高效处理AI推理、多媒体编解码等任务。SOPHGO SG2000系列SoC采用创新的三核异构设计,集成了0.5-1TOPS的NPU加速器,支持Linux/Android/FreeRTOS多系统并行运行。开发中需注意核心间的IPC通

weixin_30684743的博客 353

Java enum 对枚举元素的赋值和取值

package edu.fjnu501.bankenum; public enum Trade { save("0"), withdraw("1"); private String type; Trade(String s) { type = s; } public String getType() { return this.type; } } 通过定义构造方法和get方法即可对枚举元素进行赋值和取值 if.

AdamShyly的博客 4274

【深度学习3】ubuntu22.04从零开始搭建深度学习环境

ubuntu22.04从零开始搭建深度学习开发环境

weixin_43387635的博客 1万+

数学文化赏析MOOC笔记【2023】

深圳大学UOOC课程《数学文化赏析》课程笔记

simplenthpower的博客 1753

java定义枚举并赋值_java中枚举的特性是什么?如何赋值?

上次已经为大家介绍过java枚举的概念是什么的主要内容了。今天再来为大家介绍一些相关的知识,也是关于java枚举的一些内容,也就是它的特性以及如何赋值,一起来了解一下吧。首先说一下,java中枚举的特性是什么?枚举的特性,归结起来就是一句话:除了不能继承,基本上可以将enum看做一个常规的类。但是这句话需要拆分去理解。1.我们都知道,枚举是可以添加方法的,枚举值默认为从0开始的有序数值 。那么问题...

weixin_32821643的博客 3597

kubernetes rook 安装 cephfs

ceph root kubernete osd uuid partuuid

天津托的博客 1543

java中 enum什么意思_Java中枚举Enum的使用详解

在某些情况下,一个类的对象时有限且固定的,如季节类,它只有春夏秋冬4个对象这种实例有限且固定的类,在 Java 中被称为枚举类;在 Java 中使用 enum 关键字来定义枚举类,其地位与 class、interface 相同;枚举类是一种特殊的类,它和普通的类一样,有自己的成员变量、成员方法、构造器 (只能使用 private 访问修饰符,所以无法从外部调用构造器,构造器只在构造枚举值时被调用)...

weixin_31925745的博客 1991

Matlab实战:手把手教你用Zernike多项式模拟光学像差(附完整代码)

本文详细介绍了如何在Matlab中使用Zernike多项式模拟光学像差,包括基础理论、不同排序系统的实现、完整代码示例以及高级应用技巧。通过Zernike多项式,可以有效地描述和分析光学系统中的波前畸变,适用于望远镜校正、眼科光学等多个领域。

weixin_42523720的博客 161

别再搞混了!Vue3里xgplayer播放FLV视频与FLV直播流,配置到底差在哪?

本文详细解析了在Vue3项目中使用xgplayer播放FLV视频与FLV直播流的配置差异,帮助开发者避免常见错误。通过对比点播与直播的核心协议差异、插件选择及配置参数,提供实战代码示例和性能优化技巧,确保流畅播放体验。特别针对直播流场景,深入讲解专属配置和问题排查方法。

weixin_28687331的博客 150

Java枚举类enum原理详解

Java枚举类enum原理详解为什么要使用枚举类枚举类原理三、enum类所继承的父类java.lang.Enum其他用法附java.lang.Enum源码 为什么要使用枚举类 枚举类enum作为Java5新增特性的一部分,是用来代替常量的。 比如以下场景,定义一年的四个季节: public class Season { public final int SPRING = 1; pu...

qq_34826261的博客 1273

Android 12 系统横屏时,开机动画有两秒显示不全

平板系统默认横屏时,开机会旋转90度,显示的分辨率WxH,会变成HxW.但又会很快被SurfaceFlinger的SurfaceFlinger::processDisplayChanged 娇正。所以为了保险,可以在开机动画没结束之前,禁止旋转事件。在Android 12 产品定制化开发中,由于系统默认方向为竖屏,平板电脑要横屏显示。系统在开机时,有时因为旋转,会出现动画只显示一部分。

448313096@qq.com 1181

java enum 父类_枚举基类Enum详解

本文主要是对枚举类型的基类Enum类做一个介绍:首先,Enum类位于java.lang包下,根据类的介绍可以发现,Enum类是Java中所有枚举类的父类,将枚举作为一个set或者Map的keys来使用具有很高的效率。Enum类是一个抽象类,实现了Comparable和Serializable接口,在类中只有两个成员变量name和ordinal,分别表示枚举的名字和序号均为private,但是提供了...

weixin_29977617的博客 2381

2026年全国青少年信息素养大赛算法应用主题赛C++赛项【决赛】模拟卷1:文末附答案

2026年全国青少年信息素养大赛算法应用主题赛C++赛项【决赛】模拟卷1:文末附答案

王老师青少年编程 1178

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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

DK1.5引入了新的类型——枚举。在 Java 中它虽然算个“小”功能,却给我的开发带来了“大”方便。 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static final… 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。 Java代码 public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switch JDK1.6之前的switch语句只支持int,char,enum类

荒的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Java 枚举 enum 详解

枚举类型 Java5 中添加了一个 enum 关键字,通过 enum 关键字,我们可以将一组拥有具名的值的有限集合创建为一种新的类型,这些具名的值可以作为常规的程序组件使用,例如: public enum Spiciness { NOT, MILD, MEDIUM, HOT, FLAMING } 复制代码 这里创建了一个名为 Spiciness 的枚举类型,它有 5 个值。由于枚举类型的实例是常量,因此按照命名惯例,它们都用大写字母表示(如果名称中含有多个单词,使用下划线分隔) 要使用

bieber007的博客 732

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

JAVA Enum枚举类详解

在一些情况下,一个类的对象是有限且固定的,如季节类,只有春夏秋冬4个对象,这种实例有限且固定的类,在JAVA里称为枚举类。   1.手动实现枚举类 采用的设计方式: 通过private将构造器隐藏起来 把这个类所有可能的实例都使用public static final修饰的类变量来保存   首先定义一个Season类 public class Season{ private fi

cxy_d的博客 1816

Java枚举(enum)详解

目录1. 枚举概述2. 枚举类型的定义2.1 自定义枚举类2.2 使用enum定义枚举3. 枚举的隐含直接父类:Enum类3.1 Enum类的主要方法4. 枚举实现接口 1. 枚举概述 枚举:列举,一个一个地列出来。 Java枚举:把某个类型的对象,全部列出来。 什么情况下会用到枚举类型? 某些类的对象只有确定的有限个时,可以把这样的类声明为枚举。 例如: 星期:Monday(星期一)…Sunday(星期天) 性别:Male(男)、Female(女) 月份:January(1月)…December(1

sun10367的博客 1339

Java基础 | Java枚举(Enum)详解:从入门到实践

Java基础 | Java枚举(Enum)详解:从入门到实践

qq_20236937的博客 8035

java 枚举 Enum 详解

1、反遍Yi枚举类 1.1 举例1:普通枚举类 enum代码: public enum ColorEnum { RED, BLACK, BLUE; ColorEnum() { } } jad下载 编Yi并反编Yi: 反编Yi后的代码: 多了values(),valueOf(String s)方法 // Decompiled by Jad v1.5.8g. Copyrigh...

try to do 267

java enum 序号_Java的枚举enum示例详解

一. 什么是枚举枚举是一种数据类型,具有集合的一些特点,可以存放多个元素,但存储对象有限且固定,枚举也有比较常见的使用场景,如我们需要表达性别(男、女),颜色(红、黄、蓝),星期(星期一、星期二...星期日),四季(春、夏、秋、冬),地理位置(东、西、南、北),方向(前、后、左、右)等,这些场景都非常适合枚举。二. 定义枚举java中使用enum来定义枚举,和class,interface具有同样...

weixin_33328904的博客 1379

Java (枚举) Enum 详解

枚举是一个被命名的整型常数的集合,用于声明一组带标识符的常数。枚举在日常生活中很常见,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一个枚举。Java枚举类使用关键字来定义,各个常量使用逗号","来分割,结尾使用分号";"结束。enum定义的枚举类默认继承了java.lang.Enum类,并实现了java.lang.Serializable和java.lang.Comparable两个接口。...

weixin_62466605的博客 7667

java enum详解_Java枚举类型enum使用详解

java的Enum枚举类型终于在j2se1.5出现了。之前觉得它只不过是鸡肋而已,可有可无。毕竟这么多年来,没有它,大家不都过得很好吗?今日看《Thinking in Java》4th edition,里面有一句话“有时恰恰因为它,你才能够"优雅而干净"地解决问题。优雅与清晰很重要,正式它们区别了成功的解决方案与失败的解决方案。而失败的解决方案就是因为其他人无法理他。"使用Enum枚举类型,可以将...

weixin_31040783的博客 243
上一篇: Kotlin入门语法
下一篇: java 深入理解泛型
彼天
博客等级 码龄11年 37粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值