「java枚举实例」java枚举用法示例

博主:adminadmin 2022-11-25 20:49:09 81

本篇文章给大家谈谈java枚举实例,以及java枚举用法示例对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用java写一个枚举类程序

package com.school.stereotype; 

/** 

 * 活动枚举类型 

 * @author QiXuan.Chen 

 */

public enum EventStatus { 

  /** 

   * 未发布。 

   */ 

  DRAFT("DRAFT", "未发布"), 

  /** 

   * 已发布。 

   */

  PUBLISHED("PUBLISHED", "已发布"); 

  /** 

   * 活动状态的值。 

   */

  private String value; 

  /** 

   * 活动状态的中文描述。 

   */

  private String text; 

  /** 

   * @param status 活动状态的值 

   * @param desc 活动状态的中文描述 

   */

  private EventStatus(String status, String desc) { 

    value = status; 

    text = desc; 

  } 

  /** 

   * @return 当前枚举对象的值。 

   */

  public String getValue() { 

    return value; 

  } 

  /** 

   * @return 当前状态的中文描述。 

   */

  public String getText() { 

    return text; 

  } 

  /** 

   * 根据活动状态的值获取枚举对象。 

   * 

   * @param status 活动状态的值 

   * @return 枚举对象 

   */

  public static EventStatus getInstance(String status) { 

    EventStatus[] allStatus = EventStatus.values(); 

    for (EventStatus ws : allStatus) { 

      if (ws.getValue().equalsIgnoreCase(status)) { 

        return ws; 

      } 

    } 

    throw new IllegalArgumentException("status值非法,没有符合课程状态的枚举对象"); 

  } 

}

JAVA枚举可以用来做什么?举一个简单的例子(用枚举、不用)

Enum作为Sun全新引进的一个关键字,看起来很象是特殊的class, 它也可以有自己的变量,可以定义自己的方法,可以实现一个或者多个接口。当我们在声明一个enum类型时,我们应该注意到enum类型有如下的一些特征。

1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。

2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。

3.Enum默认实现了java.lang.Comparable接口。

4.Enum覆载了了toString方法,因此我们如果调用Color.Blue.toString()默认返回字符串”Blue”.

5.Enum提供了一个valueOf方法,这个方法和toString方法是相对应的。调用valueOf(“Blue”)将返回Color.Blue.因此我们在自己重写toString方法的时候就要注意到这一点,一把来说应该相对应地重写valueOf方法。

6.Enum还提供了values方法,这个方法使你能够方便的遍历所有的枚举值。

7.Enum还有一个oridinal的方法,这个方法返回枚举值在枚举类种的顺序,这个顺序根据枚举值声明的顺序而定,这里Color.Red.ordinal()返回0。

1.遍历所有有枚举值. 知道了有values方法,我们可以轻车熟路地用ForEach循环来遍历了枚举值了。

for (Color c: Color.values())

System.out.println(“find value:” + c);

2.在enum中定义方法和变量,比如我们可以为Color增加一个方法随机返回一个颜色。

public enum Color {

Red,

Green,

Blue;

private static int number = Color.values().length ;

public static Color getRandomColor(){

long random = System.currentTimeMillis() % number;

switch ((int) random){

case 0:

return Color.Red;

case 1:

return Color.Green;

case 2:

return Color.Blue;

default : return Color.Red;

}

}

}

可以看出这在枚举类型里定义变量和方法和在普通类里面定义方法和变量没有什么区别。唯一要注意的只是变量和方法定义必须放在所有枚举值定义的后面,否则编译器会给出一个错误。

3.覆载(Override)toString, valueOf方法。

前面我们已经知道enum提供了toString,valueOf等方法,很多时候我们都需要覆载默认的toString方法,那么对于enum我们怎么做呢。其实这和覆载一个普通class的toString方法没有什么区别。

….

public String toString(){

switch (this){

case Red:

return "Color.Red";

case Green:

return "Color.Green";

case Blue:

return "Color.Blue";

default:

return "Unknow Color";

}

}

….

这时我们可以看到,此时再用前面的遍历代码打印出来的是

Color.Red

Color.Green

Color.Blue

而不是

Red

Green

Blue.

可以看到toString确实是被覆载了。一般来说在覆载toString的时候我们同时也应该覆载valueOf方法,以保持它们相互的一致性。

4.使用构造函数。

虽然enum不可以有public的构造函数,但是我们还是可以定义private的构造函数,在enum内部使用。还是用Color这个例子。

public enum Color {

Red("This is Red"),

Green("This is Green"),

Blue("This is Blue");

private String desc;

Color(String desc){

this.desc = desc;

}

public String getDesc(){

return this.desc;

}

}

这里我们为每一个颜色提供了一个说明信息

public enum Color {

Red {

public String toString(){

return "Color.Red";

}

},

Green {

public String toString(){

return "Color.Green";

}

},

Blue{

public String toString(){

return "Color.Blue";

}

};

}

, 然后定义了一个构造函数接受这个说明信息。

要注意这里构造函数不能为public或者protected, 从而保证构造函数只能在内部使用,客户代码不能new一个枚举值的实例出来。这也是完全符合情理的,因为我们知道枚举值是public static final的常量而已。

5.实现特定的接口

我们已经知道enum可以定义变量和方法,它要实现一个接口也和普通class实现一个接口一样,这里就不作示例了。

6.定义枚举值自己的方法。

前面我们看到可以为enum定义一些方法,其实我们甚至可以为每一个枚举值定义方法。这样,我们前面覆载 toString的例子可以被改写成这样。

从逻辑上来说这样比原先提供一个“全局“的toString方法要清晰一些。

总的来说,enum作为一个全新定义的类型,是希望能够帮助程序员写出的代码更加简单易懂,个人觉得一般也不需要过多的使用enum的一些高级特性,否则就和简单易懂的初衷想违背了。

java中的枚举类型指的是什么啊?

在Java中,枚举类型本质上其实就是一个类,枚举中的常量都是该枚举类型的实例。虽然枚举类型有一些限制,比如不能再派生出子枚举类型,不能调用构造函数,不过我们仍然可以在枚举类型中定义构造函数、字段和方法

java 获取枚举类型的实例

public class MJTest {

public enum MJ {

MJ1(1), MJ(2),MJ(3);

}

public static void main(String[] args) {

MJ[] elements = MJ.values();

for (Light i : elements) {

System.out.println(" 当前值 : " + i.name());

}

}

}

Java内部类,跟枚举的用处。举个例子~

有时一个类很小,你写这个类的目的也许只是在其中写一个方法,那就没必要正儿八经的去创建一个新文件,就直接写在内部。枚举的用处就是不让创建对象,你要用我这个类的对象就用我这里枚举(你可以理解为列举)出来的。举个例子比如“星期”类,就只枚举七个对象,别人要用那就用

我这里写好的。这样才比较符合“星期”这个类在现实中的特征,才算描述的比较清楚。要不然你创建一个“星期八”

java怎么定义枚举

在Java中,枚举(enum)与类(class)、接口(interface)属于同一个级别。

使用枚举的Java程序:

public class Main {

public static void main(String[] args) {

Week w = Week.Monday;

System.out.println(w);

}

}

//定义枚举

enum Week {

Sunday,

Monday,

Tuesday,

Wednesday,

Thursday,

Friday,

Saturday

}

运行测试:

Monday

关于java枚举实例和java枚举用法示例的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-25,除非注明,否则均为首码项目网原创文章,转载请注明出处。