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

Java的枚举

枚举

对应英文(enumeration, 简写enum)

枚举是一组常量的集合,属于一种特殊的类,里面只包含一组有限的特定的对象。

自定义类实现枚举

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

2.对枚举对象/属性使用 final + static共同修饰,实现底层优化.(final 和 static 搭配使用可以不导致类加载,效率更高)

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

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

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 static final Season SPRING = new Season("春天", "温暖");public static final Season WINTER = new Season("冬天", "寒冷");public static final Season AUTUMN = new Season("秋天", "凉爽");public static final Season SUMMER = new Season("夏天", "炎热");//1. 将构造器私有化,目的防止 直接 new//2. 去掉setXxx方法, 防止属性被修改//3. 在Season 内部,直接创建固定的对象//4. 优化,可以加入 final 修饰符(static会导致类加载,防止这种情况, final 和 static 搭配使用可以不导致类加载,效率更高)private Season(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}
}
  1. 构造器私有化
  2. 本类内部创建一组对象
  3. 对外暴露对象(通过为对象添加public final static 修饰符)
  4. 可以提供get 方法,但是不要提供set



enum 关键字实现枚举


public class Enumeration03 {public static void main(String[] args) {System.out.println(Season2.AUTUMN);System.out.println(Season2.SUMMER);}
}
//演示使用enum关键字来实现枚举类
enum  Season2 {//类//定义了四个对象, 固定.
//    public static final Season SPRING = new Season("春天", "温暖");
//    public static final Season WINTER = new Season("冬天", "寒冷");
//    public static final Season AUTUMN = new Season("秋天", "凉爽");
//    public static final Season SUMMER = new Season("夏天", "炎热");//如果使用了enum 来实现枚举类//1. 使用关键字 enum 替代 class//2. public static final Season SPRING = new Season("春天", "温暖") 直接使用//   SPRING("春天", "温暖") 解读 常量名(实参列表)//3. 如果有多个常量(对象), 使用 ,号间隔即可//4. 如果使用enum 来实现枚举,要求将定义常量对象,写在前面//5. 如果我们使用的是无参构造器,创建常量对象,则可以省略 ()SPRING("春天", "温暖"), WINTER("冬天", "寒冷"), AUTUMN("秋天", "凉爽"),SUMMER("夏天", "炎热"), What();private String name;private String desc;//描述private Season2() {//无参构造器}private Season2(String name, String desc) {this.name = name;this.desc = desc;}public String getName() {return name;}public String getDesc() {return desc;}
}

注意事项

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

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

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



enum 方法

使用关键字enum 时,会隐式继承Enum 类, 这样我们就可以使用Enum 类相关的方法。

  1. toString:Enum 类已经重写过了,返回的是当前对象名,子类可以重写该方法,用于返回对象的属性信息。
  2. name:返回当前对象名(常量名),子类中不能重写。
  3. ordinal:返回当前对象的位置号,默认从0 开始。
  4. values:返回当前枚举类中所有的常量。
  5. valueOf:将字符串转换成枚举对象,要求字符串必须为已有的常量名,否则报异常
  6. compareTo:比较两个枚举常量,比较的就是编号(前减后编号)



enum 实现接口

使用enum 关键字后,就不能再继承其它类了,因为enum 会隐式继承Enum,而 Java单继承机制

枚举类和普通类一样,可以实现接口

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

相关文章:

  • Pytest测试框架3
  • 【数学建模】-- Matlab中图的最短路径
  • 中国月入过万的人多不多
  • 苹果电脑图像元数据编辑器:MetaImage for Mac
  • BeanUtils.copyProperties() 详解
  • 基于CentOS 7构建LVS-DR集群
  • openEuler-OECA考试报名火热开启,尊享半价优惠 作者:HopeInfra 发布时间:2023-08-10
  • 侯捷 C++面向对象编程笔记——10 继承与虚函数
  • mysql日期函数(查询最近n(天/月/年)、计算日期之间的天数等)
  • 通过anvt X6和vue3实现图编辑
  • win2012 IIS8.5 安装PHP教程,一些版本不能用
  • sqlalchemy执行原生sql
  • Python-OpenCV中的图像处理-图像平滑
  • Mongoose http server 例子
  • 1、初识HTML
  • 线性代数(三) 线性方程组
  • Apoll 多项式规划求解
  • ssm亚盛汽车配件销售业绩管理统源码和论文PPT
  • 发布属于自己的 npm 包
  • Redis主从复制和哨兵架构图,集成Spring Boot项目实战分享
  • java中try-with-resources自动关闭io流
  • Games101学习笔记 -光栅化
  • Pytorch量化之Post Train Static Quantization(训练后静态量化)
  • Sql奇技淫巧之EXIST实现分层过滤
  • Linux下升级jdk1.8小版本
  • 【Mysql】数据库基础与基本操作
  • 87 | Python人工智能篇 —— 机器学习算法 决策树
  • 【计算机视觉】干货分享:Segmentation model PyTorch(快速搭建图像分割网络)
  • 解析湖仓一体的支撑技术及实践路径
  • 40.利用欧拉法求解微分方程组(matlab程序)