Java基础之枚举妙用

简介:

目录(?)[+]

对于枚举,初学Java的时候可能我们就已经接触过了,但是在毕业前,其实一直都不知道真正工作里面枚举是怎么用的,枚举有什么用?接下来,博主就介绍枚举在实际工作中的一种使用场景,本文只适合初级的小菜鸟看哈,大神看了可别嘲笑这是水文哦,哈哈!

一、使用场景

在实际的工作中,比如我有一个选择家庭关系的下拉选择框,大家都是会是value和desc的组合,一般我们保存到数据库的都是value(英文),然后用户看到的是desc(中文)。但是我很多个页面会用到这样的下拉框,甚至可能很多个系统会用到,需要保持数据源的一致性,因此可以用一个枚举保存起来,然后提供一个接口,所有前端展示的数据源都是从这个接口里面获取。

可能看了这段文字仍然有点蒙,下面直接上代码,结合代码应该就清晰明了了。

二、使用实例

2.1、建立枚举如下

package com.luo.test;

public enum FamilyRelation {

    /** 父母 */
    PARENT("PARENT", "父母"),
    /** 配偶 */
    SPOUSE("SPOUSE", "配偶"),
    /** 兄弟 */
    BROUTHER("BROUTHER", "兄弟"),
    /** 姐妹 */
    SISTER("SISTER", "姐妹"),
    /** 同学 */
    SCHOOLMATE("SCHOOLMATE", "同学"),
    /** 朋友 */
    FRIEND("FRIEND", "朋友");

    private String value;
    private String desc;

    private FamilyRelation(String value, String desc) {
        this.setValue(value);
        this.setDesc(desc);
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }
}


   
   

    2.2、枚举的使用

    接下来,我们需要做的可能就是,获取上面枚举的值,然后保存到list里面,如果使用springmvc的话,只需要将这个list传递到前端,然后前端使用js放到select节点里面。

    这里之讲解将枚举放到list部分。

    先建一个dto如下:

    package com.luo.test;
    
    public class FamilyRelationDto {
    
        //关系值
        private String value;
        //关系描述
        private String desc;
    
        public String getValue() {
            return value;
        }
        public void setValue(String value) {
            this.value = value;
        }
        public String getDesc() {
            return desc;
        }
        public void setDesc(String desc) {
            this.desc = desc;
        }
    }
    
    
     
     

      将遍历枚举,将枚举里面的值放到list里面:

      package com.luo.test;
      
      import java.util.ArrayList;
      import java.util.List;
      
      public class EnumTest {
      
          public static void main(String args[]){
              //遍历枚举
              System.out.println("----------遍历枚举-------------");
              for(FamilyRelation familyRelation : FamilyRelation.values()){
                  System.out.println(familyRelation.getValue() + ":" + familyRelation.getDesc());
              }
      
              //将枚举存放到list里面
              List<FamilyRelationDto> list = new ArrayList<FamilyRelationDto>();
              for(FamilyRelation familyRelation : FamilyRelation.values()){
                  FamilyRelationDto familyRelationDto = new FamilyRelationDto();
                  familyRelationDto.setValue(familyRelation.getValue());
                  familyRelationDto.setDesc(familyRelation.getDesc());
                  list.add(familyRelationDto);
              }
              System.out.println("list的长度:" + list.size());
          }
      }
      
      
       
       


        2.3、运行结果

        这里写图片描述

        完成了,虽然内容有点短,但是又不合适跟其他结合在一起,因此就单独写了一篇博客。太水勿怪哈。

















        相关文章
        |
        2月前
        |
        安全 Java 测试技术
        🎉Java零基础:全面解析枚举的强大功能
        【10月更文挑战第19天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
        129 60
        |
        2月前
        |
        Java
        java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
        java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
        61 24
        |
        3月前
        |
        存储 缓存 Java
        java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
        这篇文章详细介绍了Java中的IO流,包括字符与字节的概念、编码格式、File类的使用、IO流的分类和原理,以及通过代码示例展示了各种流的应用,如节点流、处理流、缓存流、转换流、对象流和随机访问文件流。同时,还探讨了IDEA中设置项目编码格式的方法,以及如何处理序列化和反序列化问题。
        100 1
        java基础:IO流 理论与代码示例(详解、idea设置统一utf-8编码问题)
        |
        7月前
        |
        Java
        【Java基础】输入输出流(IO流)
        Java基础、输入输出流、IO流、流的概念、输入输出流的类层次结构图、使用 InputStream 和 OutputStream流类、使用 Reader 和 Writer 流类
        229 2
        |
        4月前
        |
        安全 Java 索引
        Java——反射&枚举
        本文介绍了Java反射机制及其应用,包括获取Class对象、构造方法、成员变量和成员方法。反射允许在运行时动态操作类和对象,例如创建对象、调用方法和访问字段。文章详细解释了不同方法的使用方式及其注意事项,并展示了如何通过反射获取类的各种信息。此外,还介绍了枚举类型的特点和使用方法,包括枚举的构造方法及其在反射中的特殊处理。
        89 9
        Java——反射&枚举
        |
        4月前
        |
        安全 Java API
        【Java面试题汇总】Java基础篇——String+集合+泛型+IO+异常+反射(2023版)
        String常量池、String、StringBuffer、Stringbuilder有什么区别、List与Set的区别、ArrayList和LinkedList的区别、HashMap底层原理、ConcurrentHashMap、HashMap和Hashtable的区别、泛型擦除、ABA问题、IO多路复用、BIO、NIO、O、异常处理机制、反射
        |
        4月前
        |
        Java
        java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
        java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
        100 5
        |
        4月前
        |
        安全 Java 开发者
        Java 枚举(enum)详解
        Java 中的枚举(`enum`)是一种特殊的数据类型,用于定义一组固定的常量,提升代码的类型安全性和可读性。枚举使用 `enum` 关键字定义,支持方法和构造函数,具有类型安全、单例、自动序列化等特点,并且可以遍历和用于 `switch` 语句中。实际应用包括状态机、指令集、类型标识等场景。枚举使代码更加清晰易维护。
        328 1
        |
        5月前
        |
        Java
        Java枚举使用的基本案例
        这篇文章是关于Java枚举的基本使用,通过一个指令下发的代码案例,展示了如何定义枚举、使用枚举以及如何通过枚举实现指令的匹配和处理。
        |
        5月前
        |
        Java 开发者
        在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案
        在Java编程中,if-else与switch作为核心的条件控制语句,各有千秋。if-else基于条件分支,适用于复杂逻辑;而switch则擅长处理枚举或固定选项列表,提供简洁高效的解决方案。本文通过技术综述及示例代码,剖析两者在性能上的差异。if-else具有短路特性,但条件增多时JVM会优化提升性能;switch则利用跳转表机制,在处理大量固定选项时表现出色。通过实验对比可见,switch在重复case值处理上通常更快。尽管如此,选择时还需兼顾代码的可读性和维护性。理解这些细节有助于开发者编写出既高效又优雅的Java代码。
        76 2