首页 > 编程语言 >Java中枚举类(enum)的简单使用

Java中枚举类(enum)的简单使用

时间:2022-10-13 20:33:22浏览次数:48  
标签:code Java 常量 enum System 枚举 println out

1.基本知识

枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中。枚举类型提供了安全检查功能,但本质上还是以类的形式存在。

由于它继承于java.lang.Enum类,所以当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实例,这些枚举类型成员默认都被final、public、static所修饰,当使用枚举类型成员时直接使用枚举类型名称调用枚举类型成员即可。

因为枚举类型对象继承与java.lang.Enum类,所以该类中一些操作枚举类型的方法都可以应用到枚举型中。

方法名称

含义

使用方式

values()

将类中所有枚举常量成员以数组的形式返回

直接使用:values()

ordinal()

得到每个枚举常量的索引,就像数组索引一样,从0开始

枚举常量.ordinal()

valueOf()

方法返回指定字符串值的枚举常量。

该方法为静态方法,调用者为枚举常量,不是枚举值;

形参只要一个String类型的值即可,并且该String值为枚举值对应的名称,即toString()方法返回的值(比如枚举常量为OK,对应的名称就是"OK")。

枚举常量.valueOf("OK")

name()

toString()

获取枚举常量,二者几乎等同,都是输出枚举常量的字符串形式

枚举常量.name()

枚举常量.toString()

2.示例

2.1Java代码

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSONObject;

public enum ToolStatusCodeExt {
// 常量数据
SUCCESS (1000, "处理成功", "通用"),
ERROR (1001, "处理失败", "通用"),
LOGIN_ERROR (1002, "登录失败", "登录操作"),
REG_SUCCESS (1003, "注册成功", "注册操作"),
REG_ERROR (1004, "注册失败", "注册操作");

// 常量数据对应的参数信息
// 编码
private final int code;
// 提示信息
private final String msg;
// 操作类型
private final String type;

// 带参的构造函数,参数类型要与常量数据中的数据类型顺序一致
ToolStatusCodeExt(int code, String msg, String type) {
this.code = code;
this.msg = msg;
this.type = type;
}

/**
* <h5>功能:将当前常量数据转化为JSON信息</h5>
*
* @return
*/
public String toJson() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("code", this.code);
jsonObject.put("msg", this.msg);
jsonObject.put("type", this.type);
return jsonObject.toJSONString();
}

/**
* 根据code获取msg
*/
public static String getValue(int code) {
for (ToolStatusCodeExt toolStatusCodeExt : values()) {
if (code == toolStatusCodeExt.code) {
return toolStatusCodeExt.msg;
}
}
return "";
}

/**
* <h5>功能:获取当前枚举类常量信息</h5>
*
*/
private static List<String> getArgs() {
List<String> list = new ArrayList<>();
for (ToolStatusCodeExt toolStatusCodeExt : values()) {
list.add(toolStatusCodeExt.name());
}
return list;
}

public int getCode() {
return code;
}

public String getMsg() {
return msg;
}

public String getType() {
return type;
}

public static void main(String[] args) throws Exception {
System.out.println("--------将当前常量数据转化为JSON信息--------");
System.out.println(ToolStatusCodeExt.SUCCESS.toJson());

System.out.println();
System.out.println("--------获取指定常量数据信息--------");
System.out.println(ToolStatusCodeExt.REG_SUCCESS.getCode());
System.out.println(ToolStatusCodeExt.REG_SUCCESS.getMsg());
System.out.println(ToolStatusCodeExt.REG_SUCCESS.getType());

System.out.println();
System.out.println("---------直接指定常量名称对应的数据信息-------");
System.out.println(ToolStatusCodeExt.valueOf("ERROR").getCode());
System.out.println(ToolStatusCodeExt.valueOf("ERROR").getMsg());
System.out.println(ToolStatusCodeExt.valueOf("ERROR").getType());
System.out.println(ToolStatusCodeExt.valueOf("ERROR").ordinal());

System.out.println();
System.out.println("---------获取当前枚举类常量信息-------");
List<String> constantList = getArgs();
for (String constantName : constantList) {
System.out.println(constantName);
}

System.out.println();
System.out.println("---------根据常量数据的code获取对应的msg信息-------");
System.out.println(getValue(1003));
}
}

2.2测试输出

将当前常量数据转化为JSON信息

Java中枚举类(enum)的简单使用_枚举

获取指定常量数据信息

Java中枚举类(enum)的简单使用_枚举_02

直接指定常量名称对应的数据信息

Java中枚举类(enum)的简单使用_枚举_03

获取当前枚举类常量信息

Java中枚举类(enum)的简单使用_枚举_04

根据常量数据的code获取对应的msg信息

Java中枚举类(enum)的简单使用_枚举_05

标签:code,Java,常量,enum,System,枚举,println,out
From: https://blog.51cto.com/abcd/5751403

相关文章

  • Java虚拟机详解(八)------虚拟机监控和分析工具(2)——可视化
    上篇博客我们介绍了​​虚拟机监控和分析命令行工具​​,由于其不够直观,不是很容易排查问题,那么本篇博客我们就来介绍几个可视化工具。1、JConsoleJConsole(JavaMoni......
  • Java基础(四)| 数组及内存分配详解
    ⭐本专栏旨在对JAVA的基础语法及知识点进行全面且详细的讲解,完成从0到1的java学习,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握JAVA编程,同时为后续的框架学习,进阶开......
  • Java编程细节
    Java编程细节时间推荐使用LocalDateTimeLocalDateTime日期时间的相关操作与处理LocalDateTime去掉T  添加LocalDateTimeSerializerConfig  字符串处理......
  • Java微服务常用注解
    SpringBoot常用注解Configuration和AutoConfiguration 介绍两者的异同,加载方式,需要注意的点等。@Configuration 先于AutoConfiguration加载  切面......
  • JavaScript 常用 工具类
    /***工具类*2022年7月8日22:52:24*//***空校验null或""都返回true*/exportfunctionisEmpty(obj){if((typeofobj==='string')){......
  • Java开发工具介绍
    开发工具IntelliJIDEAidea指定启动参数、环境变量 设置启动参数的意义就是当启动程序时,程序会优先读取idea的配置参数,这样就可以不用修改配置文件,参见:https://blog......
  • Java调用Kettle
    Java调用kettle,难的不是怎么调用,而是解决maven依赖冲突问题,直接将kettle依赖,添加到我们的maven工程,可能会导致代码大范围报错;解决方案也很简单,就是直接从spoon的......
  • java并发之synchronized
    java实现同步互斥访问有两种方式,synchronized和Lock。Sychronized是java实现的内置锁,由jvm实现。通过编译Synchronized代码块为字节码可以发现,加锁逻辑被翻译为monitorent......
  • JAVA 多线程
    JVM:1.虚拟机栈和程序计数器每个线程会单独生成2.方法区和堆是多线程共享的 多线程优点: 1、提高计算机系统CPU的利用率2、将既长又复杂的进程分为多个线程,独立运......
  • Java在PDF文档中添加或删除页面
    前言当你编辑一个PDF文档时,有时需要删除文档中多余的页面或向文档中添加新的页面。本文将向您演示如何使用Spire.PDFforJava在PDF文档中添加或删除页面。 程序环境......