• java 枚举


    枚举类与注解

    类的对象是有限个、确定的
    在这里插入图片描述

    当需要定义一组常量时,强烈建议使用枚举类

    如果枚举类中只有一个对象,则可作为单例模式的实现方式

    如何定义枚举类?

    方式一: jdk5.0之前自定义枚举类
    package Season;
    
    public class SeasonTest {
    	public static void main(String[] args) {
    		season spring = season.SPRING;
    		season summer = season.SUMMER;
    	
    	}
    }
    
    class season{
    	//1.声明season对象的属性:用private、final来修饰
    	private final String seasonName;
    	private final String seasonDesc;
    
    	// 2.私有化类的构造器,并给属性赋值
    	private season(String seasonName,String seasonDesc){
    		this.seasonDesc = seasonDesc;
    		this.seasonName = seasonName;
    	
    	}
    
    	// 3.提供当前枚举类的多个对象 声明为public static final
    	// static 是为了让其成为类的成员,而不是对象的成员
    	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.其他诉求1:获取枚举类对象的属性
    
    	public String getSeasonName() {
    		return seasonName;
    	}
    	public String getSeasonDesc() {
    		return seasonDesc;
    	}
    	// 其他诉求2:提供toSring方法
    	@Override
    	public String toString() {
    		return "season [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + 	"]";
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    方式二:jdk5.0之后,可以使用enum关键字定义

    定义的枚举类默认继承于java.lang.Enum
    主要就是定义类的对象的时候不同,并且要先定义

    package Season;
    
    public class SeasonTest1 {
    	public static void main(String[] args) {
    		season1 spring = season1.SPRING;
    		System.out.println(spring);
    		season1 summer = season1.SUMMER;
    	
    	}
    }
    
    enum season1{
    	//1.提供当前枚举类的对象,多个对象之间用,隔开,末尾对象;结束
    	SPRING("春天","春暖花开"),
    	SUMMER("夏天","夏日炎炎"),
    	AUTUMN("秋天","秋高气爽"),
    	WINTER("冬天","冰天雪地");
    
    
    	//1.声明season对象的属性:用private、final来修饰
    	private final String seasonName;
    	private final String seasonDesc;
    
    	// 2.私有化类的构造器,并给属性赋值
    	private season1(String seasonName,String seasonDesc){
    		this.seasonDesc = seasonDesc;
    		this.seasonName = seasonName;
    	
    	}
    
    
    	// 4.其他诉求1:获取枚举类对象的属性
    
    	public String getSeasonName() {
    		return seasonName;
    	}
    	public String getSeasonDesc() {
    		return seasonDesc;
    	}
    	// 其他诉求2:提供toSring方法
    	@Override
    	public String toString() {
    		return "season1 [seasonName=" + seasonName + ", seasonDesc=" + seasonDesc + "]";
    	}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45

    Enum中的常用方法

    1. toString ,就是打印对象的时候的方法

    2. values:看看枚举类中有几个对象

    3. valueOf(String Objname) 返回枚举类中对象名是Objname的对象,如果没有Objname的枚举类对象,则抛异常

      public class SeasonTest1 {
      public static void main(String[] args) {
      season1 spring = season1.SPRING;
      System.out.println(spring);
      season1 summer = season1.SUMMER;

       	season1[] values = season1.values();
       	for(int i = 0; i < values.length; i++){
       		System.out.println(values[i]);
       	}
       
       	//valueOf(String Objname) 返回枚举类中对象名是Objname的对象,如果没有Objname的枚举类对象,则抛异常
       	season1 winter = season1.valueOf("WINTER");
       	System.out.println(winter);
       }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9

      }

    使用enum关键字定义的枚举类实现接口

    可以每一个类都实现不同的接口里面的方法。枚举类的对象分别实现接口中的抽象方法

    interface info{
    	void show();
    }
    enum season1 implements info{
    	//1.提供当前枚举类的对象,多个对象之间用,隔开,末尾对象;结束
    	SPRING("春天","春暖花开"){
    		public void show(){
    			System.out.println("春天");
    		}	
    	},
    	SUMMER("夏天","夏日炎炎"){
    		public void show(){
    			System.out.println("宁夏");
    		}
    	},
    	AUTUMN("秋天","秋高气爽"){
    		public void show(){
    			System.out.println("秋天啊秋天");
    		}
    	},
    	WINTER("冬天","冰天雪地"){
    		public void show(){
    			System.out.println("冬天啊冬天");
    		}
    	};
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    vue3环境搭建
    Interactron | 体现自适应的目标检测器
    03 【流程控制语句】
    Vue---keep-alive组件的使用,缓存组件
    Xilinx Zynq 7000系列中端FPGA解码MIPI视频,基于MIPI CSI-2 RX Subsystem架构实现,提供5套工程源码和技术支持
    Shell生成支持x264的ffmpeg安卓全平台so
    设计模式(十三)----结构型模式之桥接模式
    【Java】三大集合容器概述
    Laravel 多语言项目开发
    mediakit 源码 轻微微 学习总结
  • 原文地址:https://blog.csdn.net/abc1234564546/article/details/127878505