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

Java面向对象编程高级-枚举类(四)

在这里插入图片描述


Java面向对象编程高级-枚举类(四)

  • 一、概述
  • 二、JDK5.0和JDK5.0之前如何定义枚举类
    • 1、JDK5.0之前代码演示
    • 2、JDK5.0代码演示(常用)
  • 三、练习

一、概述

枚举类型本质上也是一种类,只不过是这个类的对象是有限的、固定的几个,不能让用户随意创建。
枚举类的例子举不胜举:

星期: Monday(星期-)…Sunday(星期天)
性别:Man(男)、Woman(女)
月份:January(1月)…December(12月)
季节:Spring(春节)…Winter(冬天)
三原色:red(红色)、green(绿色)、blue(蓝色)
支付方式:Cash(现金)、WechatPay(微信)、Alipay(支付宝)、BankCard(银行卡)
就职状态:Busy(忙碌)、Free(空闲)、Vocation(休假)、Dimission(离职)
线程状态:创建、就绪、运行、阻塞、死亡

2、开发中的建议
开发中如果针对于某个类,其实例是确定个数的,则推荐将此类声明为枚举类。
如果枚举类中的实例只有1个,可以看作是单例的实现方式。

二、JDK5.0和JDK5.0之前如何定义枚举类

1、JDK5.0之前代码演示

package com._enum;public class SeasonTest {public static void main(String[] args) {System.out.println(Season.SUMMER);}
}class Season {//2、声明实例变量  使用private final 修饰private final String Name;private final String Desc;//1、私有化类的构造器private Season(String Name, String Desc) {this.Name = Name;this.Desc = Desc;}//3、提供实例变量的get方法public String getName() {return Name;}public String getDesc() {return Desc;}//创建实例对象  使用public static final  修饰public static final Season SPRING = new Season("春天", "春暖花开");public static final Season SUMMER = new Season("夏天", "夏日炎炎");public static final Season AUTOMN = new Season("秋天", "硕果累累");public static final Season WINTER = new Season("冬天", "白雪皑皑");@Overridepublic String toString() {return "Season{" +"Name='" + Name + '\'' +", Desc='" + Desc + '\'' +'}';}
}

2、JDK5.0代码演示(常用)

Enum中常用方法
使用enum关键字定义的枚举类,默认其父类是java.lang.Enum类
使用enum关键字定义的枚举类,不要再显示的定义其父类,否则会报错。

String tostring():默认返回的是常量名(对象名),可以继续手动重写该方法
static 枚举类型[] values():返回枚举类型的对象数组。该方法可以很方便地遍历所有的枚举值,是一个静态方法
static 枚举类型 valueOf(string name):可以把一个字符串转为对应的枚举类对象。要求字符串必须是枚举类对象
String name():得到当前枚举常量的名称。建议优先使用tostring()。
int ordinal():返回当前枚举常量的次序号,默认从0开始

package com._enum;public class SeasonTest1 {public static void main(String[] args) {System.out.println(Searon1.SPRING.getName());System.out.println(Searon1.SPRING);System.out.println(Searon1.SPRING.name());Searon1[] values = Searon1.values();for (int i = 0; i < values.length; i++) {System.out.println(values[i]);}//4、.valueOf(objName);返回当前枚举类中名称为objName的枚举类对象//如果枚举类中不存在ibjName则报错String objName = "WINTER";Searon1 searon1 = Searon1.valueOf(objName);System.out.println(searon1);}
}//jdk5.0 使用enum关键字定义枚举类
enum Searon1 {//1、必须在枚举类的开始声明多个对象,对象之间使用,隔开SPRING("春天", "春暖花开"),SUMMER("夏天", "夏日炎炎"),AUTOMN("秋天", "硕果累累"),WINTER("冬天", "白雪皑皑");//2、声明实例变量  使用private final 修饰private final String Name;private final String Desc;//3、私有化类的构造器private Searon1(String Name, String Desc) {this.Name = Name;this.Desc = Desc;}//3、提供实例变量的get方法public String getName() {return Name;}public String getDesc() {return Desc;}@Overridepublic String toString() {return "Searon1{" +"Name='" + Name + '\'' +", Desc='" + Desc + '\'' +'}';}
}

三、练习

案例1

package com._enum.apply;public class Employee {private String name;private int age;private Status status;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Status getStatus() {return status;}public void setStatus(Status status) {this.status = status;}public Employee() {}public Employee(String name, int age, Status status) {this.name = name;this.age = age;this.status = status;}@Overridepublic String toString() {return "Employee{" +"name='" + name + '\'' +", age=" + age +", status=" + status +'}';}
}
package com._enum.apply;public enum Status {BUSY, FREE, VOCATION, DIMISSION;
}
package com._enum.apply;public class EmployeeTest {public static void main(String[] args) {Employee e1 = new Employee("tom",21,Status.BUSY);System.out.println(e1);}}Employee{name='tom', age=21, status=BUSY}

案例2:颜色枚举类Color(使用enum声明)
1、声明颜色牧举类:7个常量对象:RED,ORANGE,YELLOW,GREEN,CYAN, BLUE,PURPLE;
2、在测试类中,使用枚举类,获取绿色对象,并打印对象。

public enum Color {REB, ORANGE, YELLOW, GREEN, CYAN, BLUE, PURPLE;
}

案例拓展:颜色枚举类(使用enum声明)

(1)声明颜色枚举类Color:

声明final修饰的int类型的属性red,green,blue
声明final修饰的String类型的属性description
声明有参构造器Color(int red,int green,int blue,String description)
创建7个常量对象:红、橙、黄、绿、青、蓝、紫,
重写tostring方法,例如:RED(255,0,0)->红色

(2)在测试类中,使用枚举类,获取绿色对象,并打印对象、
提示:

7个常量对象的RGB值如下:
红:(255,0,0)
橙:(255,128,0)
黄:(255,255,0)
绿:(日,255,0)
青:(0,255,255)
蓝:(0,0,255)
茶:(128,0 255)

package com._enum;/*** package:com._enum** @Author jimmy-yan* @Create 2024/11/4 14:05*/
public class ColorTest {public static void main(String[] args) {System.out.println(Color.GREEN);}
}enum Color {RED(255, 0, 0, "红色"),YELLOW(255, 0, 0, "黄色"),GREEN(0, 255, 0, "绿色"),BLUE(255, 0, 0, "蓝色");private final int red;private final int green;private final int blue;private final String desc;public int getRed() {return red;}public int getGreen() {return green;}public int getBlue() {return blue;}public String getDesc() {return desc;}Color(int red, int green, int blue, String desc) {this.red = red;this.green = green;this.blue = blue;this.desc = desc;}@Overridepublic String toString() {return name()+"("+red+","+green+","+blue+")->"+desc;}
}

http://www.mrgr.cn/news/65386.html

相关文章:

  • Chromium Mojo(IPC)进程通信演示 c++(1)
  • SVD求解ICP旋转矩阵不正确处理
  • 【工具变量】大数据管理机构改革DID(2007-2023年)
  • 基于物联网的户外环境检测装置教学文章
  • YOLOv10改进策略【注意力机制篇】| WACV-2024 D-LKA 可变形的大核注意 针对大尺度、不规则的目标图像
  • 基于SSM+微信小程序的订餐管理系统(点餐2)
  • 基于SSM的学生选课系统+LW参考示例
  • CSRF初级靶场
  • 三、 问题发现(日志分析)
  • qt QTimer详解
  • SpringBoot框架:新闻稿件管理技术革新
  • 【Linux驱动开发】通过设备树节点来配置和调用GPIO(pinctrl节点和gpio-controller)
  • Android 15 在状态栏时间中显示秒数
  • NVR批量管理软件/平台EasyNVR多品牌NVR管理工具/设备的广泛应用
  • 现在性能测试岗位主要有什么要求啊?
  • spring生命周期
  • 机场网约车智能出行可以选择不同车型吗?
  • 使用onnxruntime c++ API实现yolov5m视频检测
  • 在日本工作的企业文化与国内有什么不同?
  • 【美国非农数据与美联储降息之间的关系】
  • 电机用电工钢:取向硅钢片与无取向硅钢片的区别
  • 关于我、重生到500年前凭借C语言改变世界科技vlog.14——常见C语言算法
  • 告别AI焦虑,普通人快速上手用好AI大模型的3个关键能力
  • ruoyi若依vue分离版前端资源打包到jar中
  • Nop入门: 动态SQL管理
  • 【小心!parallel方法没那么简单】