IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 枚举类及enum关键字的使用 -> 正文阅读

[Java知识库]枚举类及enum关键字的使用

一、枚举类

? 理解:类的对象只有有限个,确定的.? ? ? 举例如下;

  • 星期;? 星期一,........,星期天
  • 性别; 男, 女
  • 季节; 春,夏,秋,冬。


枚举类定义方式



? ?1. 自定义枚举类(JDK5.0 之前 )

package day03;
public class SeasonTest1{ ?? ?
?? ?public static void main(String[] args) {
?? ??? ?Season summer = Season.SUMMER;
?? ??? ?System.out.println(summer);//输出Season{seasonName= 春天,seasonDesc= 春暖花开}
?? ?}
}

class Season {
?? ?
?? ?//1.. 声明对象的属性,?? ?private final修饰
?? ?private final String seasonName; ?
?? ?private final String seasonDesc;
?? ?
?? ?//2.. 私有化构造器, 并给属性赋值
?? ?private Season(String seasonName,String seasonDesc) {
?? ??? ?this.seasonName = seasonName;
?? ??? ?this.seasonDesc = seasonDesc;
?? ?}
?? ?
?? ?//3.. 提供当前枚举类的多个对象,必须是public static final的
?? ?public static final Season SPRING = new Season("春天","春暖花开");
?? ?public static final Season SUMMER = new Season("夏天","夏日炎炎");
?? ?public static final Season AUTUMN = new Season("秋天","秋高气爽");
?? ?public static final Season WINTER = new Season("冬天","冰天雪地");

?? ?
?? ?//4.. 可以通过get,set方法获取属性
?? ?public String getSeasonDesc() {
?? ??? ?return seasonDesc;
?? ?}


?? ?//4.. 提供toString()方法
?? ?@Override
?? ?public String toString() {
?? ??? ?return "Season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
?? ?}
?? ?
?? ?
?? ?

}





? ? ?2.1 enum关键字定义枚举类(JDK5.0 之后)

package day03;

public class SeasonTest1{ ?? ?
?? ?public static void main(String[] args) {
?? ??? ?Season summer = Season.SUMMER;
?? ??? ?System.out.println(summer);//输出Summer,打印当前对象名
?? ?}
}

enum Season {
?? ?
?? ?//1.. 提供当前枚举类的多个对象
?? ?SPRING("春天","春暖花开"),
?? ?SUMMER("夏天","夏日炎炎"),
?? ?AUTUMN("秋天","秋高气爽"),
?? ?WINTER("冬天","冰天雪地");

?? ?
?? ?//2.. 声明对象的属性,?? ?private final修饰
?? ?private final String seasonName; ?
?? ?private final String seasonDesc;
?? ?
?? ?//3.. 私有化构造器, 并给属性赋值
?? ?private Season(String seasonName,String seasonDesc) {
?? ??? ?this.seasonName = seasonName;
?? ??? ?this.seasonDesc = seasonDesc;
?? ?}
?? ??
?? ?
?? ?//4.. 可以通过get,set方法获取属性
?? ?public String getSeasonDesc() {
?? ??? ?return seasonDesc;
?? ?}

}

? ?enum关键字定义枚举类注意点;

  • 继承于Java.lang.Enum类,而非object类。
  • 不用重写toString 方法,默认打印对象名。
  • 必须首行声明对象。
  • 多个对象之间使用逗号,最后一个用分号。


? Enum类中的常用方法(values(), valueOf()方法)

    //values()方法,返回枚举类型的对象数组,输出枚举类中的所有对象名
?? ?public static void main(String[] args) {
?? ??? ?Season summer = Season.SUMMER;
?? ??? ?Season[] val = Season.values();?? ?
?? ??? ?for(int i = 0;i < val.length;i++) {
?? ??? ??? ?System.out.println(val[i]);//输出SPRING,SUMMER,AUTUMN,WINTER
?? ??? ?}
????}
 
?? ?*****************************************************

?? ?//valueOf(String objName)方法,返回枚举类中对象名是objName的对象。
?? ?public static void main(String[] args) {
?? ??? ?Season win = Season.valueOf("WINTER");
?? ??? ?System.out.println(win);//输出WINTER
?? ?}

? ?enum关键字定义的枚举类如何为每个对象单独重写接口中的方法

interface Info{
?? ?void show();
}

enum Season implements ?Info{
?? ?
?? ?//1.. 提供当前枚举类的多个对象
?? ?SPRING("春天","春暖花开"){
?? ??? ?@Override
?? ??? ?public void show() {
?? ??? ??? ?System.out.print("春天在哪里");
?? ??? ?}
?? ?},
?? ?SUMMER("夏天","夏日炎炎"){
?? ?@Override
?? ?public void show() {
?? ??? ?System.out.print("夏天在哪里");
?? ?}
},
?? ?AUTUMN("秋天","秋高气爽"){
?? ?@Override
?? ?public void show() {
?? ??? ?System.out.print("秋天在哪里");
?? ?}
},
?? ?WINTER("冬天","冰天雪地"){
?? ?@Override
?? ?public void show() {
?? ??? ?System.out.print("冬天在哪里");
?? ?}
};


注;当enum定义的枚举类实现接口后,如果所有对象重写该方法内容相同时,我们只需像普通类重写接口中的方法一样,在所有对象后面重写一次即可。这样我们枚举类中的每个对象便都可以获得该重写的方法了。




总结

  • 当我们定义一组常量时,考虑使用枚举类。
  • 当枚举类只有一个对象时,则可以作为单例模式的实现方式。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-09-20 15:39:09  更:2021-09-20 15:41:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:38:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码