enum如何在Java中使用

  介绍

今天就跟大家聊聊有关enum如何在Java中使用,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强>一。什么是枚举

枚举是一种数据类型,具有集合的一些特点,可以存放多个元素,但存储对象有限且固定,枚举也有比较常见的使用场景,如我们需要表达性别(男、女)、颜色(红,黄,蓝),星期(星期一,星期二……星期日),四季(春,夏,秋,冬)地理位置(东、西、南、北),方向(前,后,左,右)等,这些场景都非常适合枚举。

<强>二。定义枚举

java中使用枚举来定义枚举,和类,接口具有同样的等级,(注意是枚举,而不是enum),定义枚举可以有两种情况

<强>第一种:默认构造器(空构造器)

public  enum  Quarter  {   春天,夏天,秋天,冬天,   }

未定义成员变量和成员方法,省略了私人季度(){}

public  enum  Quarter  {   春天,夏天,秋天,冬天,   private 季度(){}   }

简单说明一下:枚举enum的构造器只能是私人

<强>第二种:定义了成员变量,带参构造器

枚举可以定义成员变量,包括成员属性,方法,抽象方法,静态方法等

public  enum  Quarter  {   春天(“春“),夏季(“夏“),秋天(“秋“),冬季(“冬“);      private 季度(String 名称){   this.name =,名称;   }   private  String 名称;      public  String  getName (), {   return 名称;   }      public  void  setName (String 名称),{   this.name =,名称;   }//静态方法   public  static  void  printName () {   System.out.println (Quarter.SUMMER);   }//抽象方法   public  abstract  void  printValue ();   }

<>强注意:枚举和类一样,可以有多个构造器,即有了一个带参构造器,还可以有无参构造器,编译是可以通过的。

除此之外:

<李>

枚举enum默认继承了. lang。枚举类,实现了. lang。Seriablizable和. lang。比较两个接口,可序列化以及进行比较,

<李>

所有的枚举值都是常量,默认采用了公共静态最终进行了修饰,枚举不是类,自然也不能被继承或实现;

<李>

枚举值必须在第一行,否则编译出错;

<强>三。枚举常见用法

1。获取枚举元素以及成员变量

public  static  void  main (String [], args), {//获取枚举元素   System.out.println (Quarter.SPRING);//调用toString()方法将枚举元素转化为字符串类型   System.out.println (Quarter.SPRING.name ());   System.out.println (Quarter.SPRING.toString ());//获取成员变量   System.out.println (Quarter.SPRING.getName ());   }

输出结果:

春天春天春天



<强> 2。枚举遍历

有时候我们需要将枚举元素都取出来作为查询条件,此时就需要进行遍历,通过调用Quarter.values()方法

public  static  void  main (String [], args), {//通过值()方法得到25元素的数组   季度[],quarters =, Quarter.values ();   List

<强> 3。开关条件判断

枚举的元素有限且固定,通过开关做条件判断却是正好

public  static  void  main (String [], args) {   Quarter  Quarter =, Quarter.AUTUMN;   switch (季度),{   case 春天:   System.out.println(“找到了,是它:“,+,春天);   打破;   case 夏天:   System.out.println(“找到了,是它:“,+,夏季);   打破;   case 秋天:   System.out.println(“找到了,是它:“,+,秋天);   打破;   case 冬天:   System.out.println(“找到了,是它:“,+,冬季);   打破;   默认值:   System.out.println(“未找到“);   打破;   }   }

执行后结果:

找到了,是它:秋天

简单说明一下:其实此处不需要违约的内容,或者说将冬季作为默认即可,因为枚举天然有类型限制,你只能传递它已有的元素以及空,不过正常情况下都会提前判断传递的参数是否为null,当开关接收到空时会报java.lang.NullPointerException。

enum如何在Java中使用