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

Java基础 8.23

1.枚举的两种实现方式

  • 自定义类实现枚举
  • 使用enum关键字实现枚举

2.自定义类实现枚举

  1. 不需要提供setXxx 方法,因为枚举对象值通常为只读
  2. 对枚举对象/属性使用final + static共同修饰,实现底层优化
  3. 枚举对象名通常使用全部大写常量的命名规范
  4. 枚举对象根据需要,也可以有多个属性
package com.logic.enum_;/*** @author logic* @version 1.0*/
public class Enumeration02 {public static void main(String[] args) {System.out.println(Season.AUTUMN);System.out.println(Season.SPRING);}
}class Season {private String name;private String desc;public final static Season SPRING = new Season("春天", "温暖");public final static Season SUMMER = new Season("夏天", "热烈");public final static Season AUTUMN = new Season("秋天", "凉爽");public final static Season WINTER = new Season("冬天", "冷冽");//1.将构造器私有化 目的防止直接私有化//2.去掉setXxx()相关方法 防止属性被修改//3.在Season直接创建固定对象//4.优化 再加一个final修饰符private Season(String desc, String name) {this.desc = desc;this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}@Overridepublic String toString() {return "Season{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

小结:进行自定义类实现枚举,有如下特点:

  1. 构造器私有化
  2. 本类内部创建一组对象
  3. 对外暴露对象(通过为对象添加public final static修饰符
  4. 可以提供get方法,但是不要提供set

3.enum关键字实现枚举

快速入门

package com.logic.enum_;/*** @author logic* @version 1.0*/
public class Enumeration03 {public static void main(String[] args) {System.out.println(Season2.AUTUMN);System.out.println(Season2.SPRING);}
}enum Season2 {// 如果使用enum来实现枚举// 使用关键字 enum 替代 class// 1.public static final Season SPRING = new Season("春天","温暖")直接使用// 2.SPRING("春天","温暖")解读常量名(实参列表)// 3.如果有多个常量(对象),使用,号间隔即可// 4.如果使用enum来实现枚举,要求将定义常量对象,写在前面// 5.如果使用无参构造器 创建常量对象 则可以省略()SPRING("春天", "温暖"), SUMMER("夏天", "热烈"),AUTUMN("秋天", "凉爽"), WINTER("冬天", "冷冽");private String name;private String desc;//    public final static Season2 SPRING = new Season2("春天", "温暖");
//    public final static Season2 SUMMER = new Season2("夏天", "热烈");
//    public final static Season2 AUTUMN = new Season2("秋天", "凉爽");
//    public final static Season2 WINTER = new Season2("冬天", "冷冽");private Season2(String desc, String name) {this.desc = desc;this.name = name;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}@Overridepublic String toString() {return "Season2{" +"name='" + name + '\'' +", desc='" + desc + '\'' +'}';}
}

enum关键字实现枚举注意事项

  • 当我们使用enum关键字开发一个枚举类时,默认会继承Enum类,而且是一个final类,使用javap 工具来演示

  • 传统的public static final Season2 SPRING = new Season2("春天”"温暖"); 简化成 SPRING("春天","温暖”), 这里必须知道,它调用的是哪个构造器
  • 如果使用无参构造器 创建枚举对象,则实参列表和小括号可以省略
  • 当有多个枚举对象时,使用,间隔,最后有一个分号结尾

4.练习

package com.logic.enum_;/*** @author logic* @version 1.0*/
public class EnumExercise01 {public static void main(String[] args) {Gender boy1 = Gender.BOY;Gender boy2 = Gender.GIRL;System.out.println(boy1);System.out.println(boy1 == boy2);}
}enum Gender {BOY, GIRL;
}
http://www.dtcms.com/a/347217.html

相关文章:

  • 【8位数取中间4位数】2022-10-23
  • LangChain4J-基础(整合Spring、RAG、MCP、向量数据库、提示词、流式输出)
  • QT-常用类
  • 【GPT入门】第57课 详解 LLamaFactory 与 XTuner 实现大模型多卡分布式训练的方案与实践
  • calchash.exe和chckhash.exe计算pe文件hash值的两个实用小工具
  • 【Linux系统】命名管道与共享内存
  • 结构化数据与非结构化数据的区别、特点和应用场景
  • Games 101 第四讲 Transformation Cont(视图变换和投影变换)
  • Java22 stream 新特性 窗口算子:GathererOp 和 GatherSink
  • Flink2.0学习笔记:使用HikariCP 自定义sink实现数据库连接池化
  • 权限管理模块
  • 用 Ansible 优雅部署 Kubernetes 1.33.3(RedHat 10)
  • 第一章:启航篇 —— 新晋工程师的生存与扎根 (1)
  • TensorFlow 深度学习 开发环境搭建
  • 通过Java连接并操作MySQL数据库
  • 多智能体篇:智能体的“语言”——ACL协议与消息队列实现
  • 高斯分布的KL散度计算
  • STM32学习笔记19-FLASH
  • 标准浪涌测试波形对比解析
  • linux内核 - vmalloc 介绍
  • Unity 字符串输出文字一样但Equals 判断为false
  • 图论与最短路学习笔记
  • CH2 线性表
  • LeetCode 分类刷题:2529. 正整数和负整数的最大计数
  • IDEA控制台乱码(Tomcat)解决方法
  • 2-4.Python 编码基础 - 流程控制(判断语句、循环语句、break 语句与 continue 语句)
  • MySQL存储过程详解
  • `strlen` 字符串长度函数
  • GEO优化服务:智能时代的全球竞争新赛道
  • VS Code 中创建和开发 Spring Boot 项目