当前位置: 首页 > article >正文

Java基础 -- 枚举类Enum

在这里插入图片描述

Java基础 -- 枚举类Enum

    • 1. 介绍
      • 1.1 xxx
      • 1.2 代码块
        • 1.2.1 代码块
        • 1.2.2 代码块
    • 2. 返回枚举项的序号
      • 2.1 ordinal方法
      • 2.2 正常写法
      • 2.3 Apache的CollectionUtils工具类(推荐)
    • 3. 类属性值的Null和非空判断
    • 4. Awakening


在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


1. 介绍

1.1 xxx

  • 代码复用,多种数据类型执行相同的代码
  • 在编译期间可以检查类型是否安全,报警ClassCastException,类型转无法转换,同时所有强制性类型转换都是自动和隐式进行的,提高了代码的安全性和重用性
  • 提高代码的可读性

1.2 代码块

1.2.1 代码块

  • 执行顺序:静态代码块 → main → 构造代码块 → 构造方法
    在这里插入图片描述
public class Demo01 {

    static{
        System.out.println("父类静态代码块开始执行!");
    }
    {
        System.out.println("父类构造代码块开始执行!");
    }
    public Demo01(){
        System.out.println("父类构造方法开始执行!");
    }
    public static void main(String[] args) {
        System.out.println("父类开始运行main");
        new Demo01();

    }
}

1.2.2 代码块

  • 执行顺序:父类静态代码块 → 子类静态代码块 → main → 父类构造代码块 → 父类构造方法 → 子类构造代码块 → 子类构造方法
    在这里插入图片描述
public class Demo02 extends Demo01{
    static{
        System.out.println("子类静态代码块开始执行!");
    }
    {
        System.out.println("子类构造代码块开始执行!");
    }
    public Demo02(){
        System.out.println("子类构造方法开始执行!");
    }
    public static void main(String[] args) {
        System.out.println("子类开始运行main");
        new Demo02();
    }
}

2. 返回枚举项的序号

2.1 ordinal方法

public enum Light {

       RED, 
       GREEN, 
       YELLOW;
}
public static void main(String[] args) {
    System.out.println(Light.GREEN.ordinal());
}

2.2 正常写法

public enum Light {

    RED(0),
    GREEN(1),
    YELLOW(2);

    private Integer id;

    Light(Integer id) {
        this.id = id;
    }

    public Integer getId(){
        return this.id;
    }
    
}
 public static void main(String[] args) {
        System.out.println(Light.GREEN.id);
    }

2.3 Apache的CollectionUtils工具类(推荐)

        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.1</version>
        </dependency>
    @Test
    void demo02() {

        String[] arrayA = new String[] { "1", "2", "3", "4"};
        String[] arrayB = new String[] { "3", "4", "5", "6" };
        List<String> listA = Arrays.asList(arrayA);
        List<String> listB = Arrays.asList(arrayB);

        //1、并集 union
        System.out.println(CollectionUtils.union(listA, listB));
        //输出: [1, 2, 3, 4, 5, 6]

        //2、交集 intersection
        System.out.println(CollectionUtils.intersection(listA, listB));
        //输出:[3, 4]

        //3、交集的补集(析取)disjunction
        System.out.println(CollectionUtils.disjunction(listA, listB));
        //输出:[1, 2, 5, 6]

        //4、差集(扣除)
        System.out.println(CollectionUtils.subtract(listA, listB));
        //输出:[1, 2]
    }

3. 类属性值的Null和非空判断

  • Utils Code

import java.util.Collection;


public class AttributeValidate {
   private static final String NOT_NULL_FAILURE_MESSAGE = "does not accept null args";
   private static final String NOT_EMPTY_FAILURE_MESSAGE = "does not accept empty args";

   public static void notNull(Object... args_) {
      if (args_ == null)
         throw new IllegalArgumentException(NOT_NULL_FAILURE_MESSAGE);

      for (Object arg : args_) {
         if (arg == null)
            throw new IllegalArgumentException(NOT_NULL_FAILURE_MESSAGE);
      }
   }

   public static void notEmpty(Object... args_) {
      if (args_ == null)
         throw new IllegalArgumentException(NOT_EMPTY_FAILURE_MESSAGE);

      for (Object arg : args_) {
         if (arg == null)
            throw new IllegalArgumentException(NOT_EMPTY_FAILURE_MESSAGE);
         if (arg instanceof Collection<?>) {
            if (((Collection<?>) arg).size() == 0)
               throw new IllegalArgumentException(NOT_EMPTY_FAILURE_MESSAGE);
         }
      }
   }
}

  • Test Code
 AttributeValidate.notNull(。。。。。。);

4. Awakening

         在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。
在这里插入图片描述


http://www.kler.cn/a/3987.html

相关文章:

  • 构建安全防线:基于视频AI的煤矿管理系统架构创新成果展示
  • Excel中函数SIGN()的用法
  • pandoc + wkhtmltox 批量转换Markdown文件为PDF文件
  • CSS:语法、样式表、选择器
  • MySQL程序之:连接到服务器的命令选项
  • 26个开源Agent开发框架调研总结(一)
  • 走进小程序【一】什么是小程序?
  • 【蓝桥杯】​蓝桥杯——每日四道编程题(两道真题+两道模拟)​| 第 二 天
  • 【VB6|第17期】16进制颜色值与RGB值互相转换(含源码)
  • Node.js学习笔记——Node.js模块化
  • 一文彻底搞懂为什么OpenCV用GPU/cuda跑得比用CPU慢?
  • Python 十大开源Python库,看看你熟悉几个?
  • cpu报警
  • 耐心排序之最长递增子序列(LIS)
  • 数仓必备概念
  • 电子拣货标签13代系统简介
  • 【洛谷 P2249】【深基13.例1】查找(向量+二分查找+递归)
  • ThreadLocal原理 、什么是内存泄漏
  • 大量产品“GPT 化”,开源大模型 AI 应用开发框架发布
  • STM32——IIC总线(MPU6050应用)
  • C++中的HTTP协议问题
  • JAVA开发与运维(云安全产品)
  • 【算法】JavaScript 必会算法 —— 排序(冒泡、选择、快排、插入、二分插入、希尔、堆、归并、计数、桶、基数)
  • WiFi-交互过程分析
  • tomcat线程池以及在SpringBoot中的启动过程
  • 11万字数字政府智慧政务大数据建设平台(大数据底座、数据治理)