前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java的枚举类型

Java的枚举类型

原创
作者头像
真正的飞鱼
发布于 2023-05-12 00:31:55
发布于 2023-05-12 00:31:55
9480
举报
文章被收录于专栏:技术知识总结技术知识总结

如果类的对象的数量只有有限个,并且可以确定对象的属性,那么考虑使用枚举类。例如:

  • 性别:Man(男)、Woman(女)
  • 订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、Checked(已确认收货)

定义枚举类型

代码语言:java
AI代码解释
复制
public enum UserType {

    // 1.提供枚举类的对象(枚举常量)
    common("普通用户", 0),
    sectionAdmin("板块管理员", 1),
    superAdmin("超级管理员", 2);

    // 2.对象的属性
    private String typeName;
    private Integer typeId;

    // 3.私有化构造器(private 可省略)
    private UserType(String typeName, Integer typeId) {
        this.typeName = typeName;
        this.typeId = typeId;
    }
}

介绍枚举类型

如果需要的话,可以在枚举类型中添加一些构造器、方法和域。当然,构造器只是在构造枚举常量的时候被调用。

所有的枚举类型都是 Enum 类的子类。它们继承了这个类的许多方法。其中最有用的一个是 toString() 方法,这个方法能够返回枚举常量名。例如,Size.SMALL.toString() 将返回字符串 “SMALL”。

toString() 的逆方法是 valueOf() 静态方法。例如,语句:Size s = Enum.valueOf(Size.class, "SMALL"); 将变量 s 设置成 Size.SMALL。

每个枚举类型都有一个静态的 values() 方法,它将返回一个包含全部枚举值的数组。

ordinal 方法返回 enum 声明中枚举常量的位置,位置从 0 开始计数。例如:Size.SMALL.ordinal() 返回 0。

代码语言:java
AI代码解释
复制
public static void main(String[] args) {
	// [common, sectionAdmin, superAdmin]
    UserType[] userTypes = UserType.values();

    // 返回具有指定名称的枚举常量
    UserType common = UserType.valueOf("common");

    // 返回具有指定名称的指定枚举类型的枚举常量
    UserType common1 = Enum.valueOf(UserType.class, "common");

    // 返回枚举常量的名称 (Enum 类重写了 toString() )
    String name = common.toString();
}

枚举类实现接口

情况一:把枚举类当作正常的类,在类中实现接口

情况二:每个枚举常量分别实现接口

代码语言:java
AI代码解释
复制
public enum UserType implements UserService {

    // 1.提供枚举类的对象
    common("普通用户", 0) {
        @Override
        public void method() {
            
        }
    },
    sectionAdmin("板块管理员", 1) {
        @Override
        public void method() {
            
        }
    },
    superAdmin("超级管理员", 2) {
        @Override
        public void method() {
            
        }
    };

    // 2.对象的属性
    private String typeName;
    private Integer typeId;

    // 3.私有化的构造器
    private UserType(String typeName, Integer typeId) {
        this.typeName = typeName;
        this.typeId = typeId;
    }
}

参考资料

Java核心技术卷一:基础知识》(第10版)第5章:5.6 枚举类

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java基础系列(二十):枚举入门
关键字 enum可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件来使用,这种新的类型就是枚举类。
山禾说
2019/01/21
4110
java | 深入理解Java枚举类型(二)
blog.csdn.net/javazejian/article/details/71333103
JavaFish
2019/10/17
1.3K0
深入分析Java反射(二)-数组和枚举
Java反射的API在JavaSE1.7的时候已经基本完善,但是本文编写的时候使用的是Oracle JDK11,因为JDK11对于sun包下的源码也上传了,可以直接通过IDE查看对应的源码和进行Debug。
Throwable
2020/06/23
6600
(23) 枚举的本质 / 计算机程序的思维逻辑
前面系列,我们介绍了Java中表示和操作数据的基本数据类型、类和接口,本节探讨Java中的枚举类型。 所谓枚举,是一种特殊的数据,它的取值是有限的,可以枚举出来的,比如说一年就是有四季、一周有七天,虽然使用类也可以处理这种数据,但枚举类型更为简洁、安全和方便。 下面我们就来介绍枚举的使用,同时介绍其实现原理。 基础 基本用法 定义和使用基本的枚举是比较简单的,我们来看个例子,为表示衣服的尺寸,我们定义一个枚举类型Size,包括三个尺寸,小/中/大,代码如下: public enum Size {
swiftma
2018/01/31
8230
Java魔法堂:枚举类型详解
一、前言                                   Java的枚举类型相对C#来说具有更灵活可配置性,Java的枚举类型可以携带更多的信息。 // C# enum MyColor{ RED = 0, BLUE = 1 } Console.Write(MyColor.RED); // Java enum MyColor{ RED("Hot", 4), BLUE("SAD",8); private String mood; public String get
^_^肥仔John
2018/01/18
1K0
【说站】java枚举类型的原理
1、Java追加了java.lang.Enum抽象类,是所有的枚举类型的基础类。提供了基本的属性和基本的方法。同时,支持将枚举作为Set和Map使用
很酷的站长
2022/11/24
3540
【说站】java枚举类型的原理
【愚公系列】2022年01月 Java教学课程 76-枚举
枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型 。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。
愚公搬代码
2022/01/25
2530
【愚公系列】2022年01月 Java教学课程 76-枚举
【小家Java】深入理解Java枚举类型(enum)及7种常见的用法(含EnumMap和EnumSet)
这次当我入职一家新公司的时候,编写代码发现,里面还在大量的使用public static final…这种语句来神马一些状态常量。
YourBatman
2019/09/03
6.8K0
【小家Java】深入理解Java枚举类型(enum)及7种常见的用法(含EnumMap和EnumSet)
Junit单元测试遇见的一个枚举类型的坑(枚举类型详解)
枚举类型很早就在计算机语言中存在了,主要被用来将一组相似的值包含进一种类型中,这种类型的名称被定义成独一无二的类型描述符,这就是枚举类型。
Criss@陈磊
2019/08/02
1.7K0
09 枚举类
枚举用来管理一组相关常量的集合,使用枚举可以提高程序的可读性,使代码更清晰且更易于维护。
acc8226
2022/05/17
3750
java枚举类介绍
public static final Season SPING=new Season("春天","温暖");
用户7043603
2022/02/24
3870
java枚举类型学习
用的不多,但用的时候仅仅简单的使用,不太明白原理,今天就系统的学一下枚举。参考:java编程思想。 Update: 枚举可以当做数据字典来存储,通常只要一个字段即instance本身,toString()或者name()打印的string。 枚举的数据都是一个实例对象,比如 enum Test{A}中A就是一个对象,A的toString和name()的结果是“A”。而如果一个字符串为"A",可以转为对应的枚举实例:Test.valueOf("A") ---- 1.简单创建 枚举就是一个固定的集合,内容是声明
Ryan-Miao
2018/03/13
1.2K0
Java 枚举类型 enum
枚举类型是 Java 5 中增加的一个小特性,在此之前,实现枚举的方式为定义编译期常量形式。而代码中使用编译期常量的方式在理解性和安全性方面存在不足,单纯的常量数值不能够直观的体现出其作为枚举实例的目的,且实际中无限的取值空间也不能很好的与理论上有限的枚举空间相匹配。
zhipingChen
2018/10/09
1.3K0
JDK中枚举的底层实现
上一篇文章复习介绍了JDK中注解的底层实现,跟注解一样比较常用,但是底层实现比较神秘的还有枚举类型。趁着国庆假期的最后两天,把JDK中枚举的底层实现也进行一次探究。
Throwable
2020/06/23
9620
Java基础(十二):枚举类
Java微观世界
2025/01/21
2090
Java 枚举
JDK 1.5 中可以在 switch 表达式中使用Enum定义的枚举类的对象 作为表达式
Java_慈祥
2024/08/06
1710
三歪问我为啥用枚举,枚举有哪些用法?
在学习过程中,我们也只是在定义常量的时候,会意识到枚举的存在,而定义常量其实可以在类中实现,这时就会感觉枚举有点鸡肋。但在实际项目开发的过程中,枚举因相当迷人的特性而受到越来越多的关注。
敖丙
2020/05/26
1.2K0
枚举类型浅析
回头再写备注 1、枚举类就是class并且是一个不可被继承的final class,其枚举值都是public static final的。 2、既然枚举类是class其就会有构造、方法、数据域。但是枚举类的构造器有很大不同:首先,构造器只是在构造枚举值时使用;其次,构造器是private的,不允许为public(这样可以保证外部代码无法新构造枚举类的实例。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。 但枚举类的方法和数据域可以允许外部访问)。 3、所有枚举类都
小小明童鞋
2018/06/13
9420
Java枚举类型的原理
package com.lxq.enumm;   public enum Color   {       RED{   public String getName(){   return "红色";           }       }       ,GREEN{   public String getName(){   return "绿色";           }       }       ,YELLOW{   public String getName()
汤高
2018/03/28
1.5K0
Java 枚举类详解
这样一来,1-7的星期数就可以用WeekConstant.MON这样的方式来表达了,好看了不少,但是仍然存在一定的缺陷。
花落花相惜
2021/12/15
1K0
相关推荐
Java基础系列(二十):枚举入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档