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

【JAVA学习笔记】43 - 枚举类

项目代码

https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter11/src/com/yinhai/enum_

〇、创建时自动填入版权 作者等信息

 如何在每个文件创建的时候打入自己的信息以及版权呢

菜单栏-File-setting-Editor-File and Code Templaters -Includes-输入信息 如下图

一、引出

要求创建季节(Season)对象,请设计并完成

/*** @author 银海* @version 1.0*/
public class Enumeration01 {public static void main(String[] args) {Season season = new Season("spring", "worm");Season season1 = new Season("winter", "cold");Season season2 = new Season("summer", "hot");Season season3 = new Season("autumn", "cold");//对于季节而言,是固定的四个 不会有更多//因此这样设计不好,所以引出枚举类,把对象一个个列举出来Season other = new Season("asdasdas", "~~~~~~~~~");}
}
class Season{private String name;private String desc;public Season(String name, String desc) {this.name = name;this.desc = desc;}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;}
}

二、两种实现方式

1.自定义类实现枚举

        1)不需要提供setXxx方法,因为枚举对象值通常为只读.

        2)对枚举对象/属性使用final + static 共同修饰,实现底层优化.

        3)枚举对象名通常使用全部大写,常量的命名规范

        4)枚举对象根据需要,也可以有多个属性

public class Enumeration02 {public static void main(String[] args) {System.out.println(Season.AUTUMN);System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.WINTER);}
}class Season {private String name;private String desc;//3.在Season内部直接创建对象,加上public static//4.优化可以加入final修饰符public final static Season SPRING = new Season("春天", "暖");public final static Season WINTER = new Season("冬天", "寒冷");public final static Season AUTUMN = new Season("秋天", "冷");public final static Season SUMMER = new Season("夏天", "热");//1.私有化构造器public Season(String name, String desc) {this.name = name;this.desc = desc;}//2.去掉set方法 防止被修改public String getName() {return name;}public String getDesc() {return desc;}}

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

        1)构造器私有化

        2)本类内部创建一组对象

        3)对外暴露对象(通过为对象添加public final static修饰符)

        4)可以提供get方法,但是不要提供set

2.enum关键字实现枚举(引出)

public class Enumeration03 {public static void main(String[] args) {System.out.println(Season.AUTUMN);System.out.println(Season.SPRING);System.out.println(Season.SUMMER);System.out.println(Season.WINTER);}}
enum Season {//1.使用enum代替class//2.//常量名(实参列表);//3.如果有多个常量(对象)SPRING("春天", "暖"),WINTER("冬天", "寒冷"),AUTUMN("秋天", "冷"),SUMMER("夏天", "热");//等价于自定义的public final static Season SPRING = new Season("春天", "暖");//4.如果使用enum来实现枚举,要求将常量对象写在前面private String name;private String desc;private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}}

三、enum实现枚举注意事项和细节

1.当我们使用enum关键宇开发一个枚举类时, 默认会继承Enum类

        使用javap反编译

                

        如何使用javap反编译呢,定位class文件,使用cmd,输入javap 想要反编译的文件.class

2.调用的构造器

        传统的public static final Season2 SPRING = new Season2("春天","温暖"); 简化成SPRING("春天","温暖"),这里必须知道,它调用的是哪个构造器,注意得是private

3.如果使用无参构造器创建枚举对象,则实参列表和小括号都可以省略

4.当有多个枚举对象时,使用,逗号 间隔最后用一个分号结尾

5.枚举对象必须放在枚举类的行首.
 

四、课堂练习

                

正确 调用的是Gender 的无参构造器,没有写构造器也隐含在类内

        ​​​​​​​        

会继承父类Enum,本类是没有toString的所以要找父类有没有toString

        ​​​​​​​        ​​​​​​​

有,名字就是BOY(有个疑问,开一章节再看看),输出true

http://www.lryc.cn/news/204863.html

相关文章:

  • Springcloud介绍
  • LK光流法和LK金字塔光流法(含python和c++代码示例)
  • 数据库索引是什么?创建索引的注意事项
  • java中的异常,以及出现异常后的处理【try,catch,finally】
  • 前端构建但没有更新
  • 【Opencv】OpenCV使用CMake和MinGW的编译安装出错解决
  • #Day Day Plan# 《NCB_PCI_Express_Base 5.0.1.0》pdf 译文笔记 模版
  • 分代ZGC详解
  • vue图片懒加载
  • 【c++】运算符重载实例
  • 用*画田字形状,numpy和字符串格式化都可以胜任
  • 搭建一个windows的DevOps环境记录
  • 漏洞扫描系统的主要功能有哪些
  • Spring Boot配置多个Kafka数据源
  • Learning Open-World Object Proposals without Learning to Classify(论文解析)
  • 前端在项目中添加自己的功能页面
  • 数据库MySQL(二):DDL数据定义语言
  • Spring FactoryBean 源码讲解
  • 【C语言】零碎知识点|细节
  • 电影评分数据分析案例-Spark SQL
  • vue如何使用冻结对象提升代码效率及其原理解析
  • 基于深度学习网络的手势识别算法matlab仿真
  • [论文笔记] 多语言模型中的负干扰研究结果和元学习算法
  • 【OpenVINO】行人摔倒检测 — 基于 OpenVINO C# API 部署PP-Human-下篇
  • 运行报错(三)git bash报错fatal: detected dubious ownership in repository at
  • nvm 的安装及使用
  • xcode Simulator 安装
  • 【Maven教程】(八):使用 Nexus 创建私服 ~
  • 螺旋矩阵[中等]
  • babel6使用ES2020最新js语法