Java 枚举和枚举类

Java 枚举

在本教程中,我们将学习 Java 中的枚举。我们将在示例的帮助下学习创建和使用枚举和枚举类。

在 Java 中,枚举(enumeration 的缩写)是一种具有一组固定常量值的类型。我们使用enum关键字来声明枚举。例如,

enum Size { 
   SMALL, MEDIUM, LARGE, EXTRALARGE 
}

在这里,我们创建了一个名为的枚举 尺寸. 它包含固定值小的, 中等的, 大, 和 超大.

大括号内的这些值称为枚举常量(值)。

注意:枚举常量通常以大写形式表示。


示例 1:Java 枚举

enum Size {
   SMALL, MEDIUM, LARGE, EXTRALARGE
}

class Main {
   public static void main(String[] args) {
      System.out.println(Size.SMALL);
      System.out.println(Size.MEDIUM);
   }
}

输出

SMALL
MEDIUM

正如我们从上面的例子中看到的,我们使用枚举名称来访问常量值。

此外,我们可以创建枚举类型的变量。例如,

Size pizzaSize;

这里, 比萨大小 是一个变量 尺寸类型。它只能分配 4 个值。

pizzaSize = Size.SMALL;
pizzaSize = Size.MEDIUM;
pizzaSize = Size.LARGE;
pizzaSize = Size.EXTRALARGE;

示例 2:带有 switch 语句的 Java 枚举

enum Size {
 SMALL, MEDIUM, LARGE, EXTRALARGE
}

class Test {
 Size pizzaSize;
 public Test(Size pizzaSize) {
   this.pizzaSize = pizzaSize;
 }
 public void orderPizza() {
   switch(pizzaSize) {
     case SMALL:
       System.out.println("I ordered a small size pizza.");
       break;
     case MEDIUM:
       System.out.println("I ordered a medium size pizza.");
       break;
     default:
       System.out.println("I don't know which one to order.");
       break;
   }
 }
}

class Main {
 public static void main(String[] args) {
   Test t1 = new Test(Size.MEDIUM);
   t1.orderPizza();
 }
}

输出

I ordered a medium size pizza.

在上面的程序中,我们创建了一个枚举类型 尺寸. 然后我们声明了一个变量比萨大小 的 尺寸 类型。

这里,变量 比萨大小 只能分配 4 个值 (小的, 中等的, 大, 超大)。

注意声明,

Test t1 = new Test(Size.MEDIUM);

它将调用Test()内部的构造函数测试班级。现在,变量比萨大小 被分配了 中等的 不变。

根据该值,执行switch case 语句的其中一种情况


Java 中的枚举类

在 Java 中,枚举类型被认为是一种特殊类型的类。它是随着 Java 5 的发布而引入的。

枚举类可以像常规类一样包含方法和字段。

enum Size {
    constant1, constant2, …, constantN;

    // methods and fields	
}

当我们创建一个枚举类时,编译器会创建每个枚举常量的实例(对象)。此外,public static final默认情况下所有枚举常量始终是。


示例 3:Java 枚举类

enum Size{
  SMALL, MEDIUM, LARGE, EXTRALARGE;

  public String getSize() {

    // this will refer to the object SMALL
    switch(this) {
      case SMALL:
        return "small";

      case MEDIUM:
        return "medium";

      case LARGE:
        return "large";

      case EXTRALARGE:
        return "extra large";

      default:
        return null;
      }
   }

  public static void main(String[] args) {

    // call getSize()
    // using the object SMALL
    System.out.println("The size of the pizza is " + Size.SMALL.getSize());
  }
}

输出

The size of the pizza is small

在上面的例子中,我们创建了一个枚举类 尺寸. 它有四个常数小的, 中等的, 大 和 超大.

自从 尺寸 是一个枚举类,编译器会自动为每个枚举常量创建实例。

main()方法内部,我们使用了实例小的调用该getSize()方法。

注意:与常规类一样,枚举类也可能包含构造函数。要了解更多信息,请访问Java 枚举构造函数


Java 枚举类的方法

枚举类中有一些预定义的方法可供使用。

1. Java Enum ordinal()

ordinal()方法返回枚举常量的位置。例如,

ordinal(SMALL) 
// returns 0

2. 枚举 compareTo()

compareTo()方法根据序数值比较枚举常量。例如,

Size.SMALL.compareTo(Size.MEDIUM)
 // returns ordinal(SMALL) - ordinal(MEDIUM)

3.枚举toString()

toString()方法返回枚举常量的字符串表示形式。例如,

SMALL.toString()
// returns "SMALL"

4.枚举名称()

name()方法以字符串形式返回枚举常量的定义名称。该name()方法的返回值为final。例如,

name(SMALL)
// returns "SMALL"

5. Java 枚举 valueOf()

valueOf()方法接受一个字符串并返回一个具有相同字符串名称的枚举常量。例如,

Size.valueOf("SMALL")
// returns constant SMALL.

6.枚举值()

values()方法返回一个包含所有枚举常量的枚举类型数组。例如,

Size[] enumArray = Size.value();

为什么是 Java 枚举?

在 Java 中,引入了 enum 来代替 int 常量的使用

假设我们使用了一组int常量。

class Size {
   public final static int SMALL = 1;
   public final static int MEDIUM = 2;
   public final static int LARGE = 3;
   public final static int EXTRALARGE = 4;
}

在这里,如果我们打印常量就会出现问题。这是因为只打印了可能没有帮助的数字。

因此,我们可以简单地使用枚举,而不是使用 int 常量。例如,

enum Size {
   SMALL, MEDIUM, LARGE, EXTRALARGE
}

这使我们的代码更加直观。

此外, enum 提供编译时类型安全

如果我们声明一个变量 尺寸类型。例如,

Size size;

在这里,保证变量将保存四个值之一。现在,如果我们尝试传递这四个值以外的值,编译器将产生错误。

在 Java 中,枚举类可能像常规类一样包含构造函数。这些枚举构造函数是

  • 私人- 在班级内访问
  • package-private - 在包内访问

示例:枚举构造函数

enum Size {

   // enum constants calling the enum constructors 
   SMALL("The size is small."),
   MEDIUM("The size is medium."),
   LARGE("The size is large."),
   EXTRALARGE("The size is extra large.");

   private final String pizzaSize;

   // private enum constructor
   private Size(String pizzaSize) {
      this.pizzaSize = pizzaSize;
   }

   public String getSize() {
      return pizzaSize;
   }
}

class Main {
   public static void main(String[] args) {
      Size size = Size.SMALL;
      System.out.println(size.getSize());
   }
}

输出

The size is small.

在上面的例子中,我们创建了一个枚举 尺寸. 它包括一个private枚举构造函数。构造函数接受一个字符串值作为参数,并为变量赋值比萨大小.

由于构造函数是private,我们无法从类外部访问它。但是,我们可以使用枚举常量来调用构造函数。

在里面 主要的 类,我们将 SMALL 分配给枚举变量 尺寸. 常数小的 然后调用构造函数 尺寸 以字符串为参数。

最后,我们调用getSize()using尺寸.

Java 枚举字符串

在Java中,我们可以使用toString()方法或name()方法来获取枚举常量的字符串表示。例如,

enum Size {
   SMALL, MEDIUM, LARGE, EXTRALARGE
}

class Main {
   public static void main(String[] args) {

      System.out.println("string value of SMALL is " + Size.SMALL.toString());
      System.out.println("string value of MEDIUM is " + Size.MEDIUM.name());

   }
}

输出

string value of SMALL is SMALL
string value of MEDIUM is MEDIUM

在上面的例子中,我们已经看到枚举常量的默认字符串表示是同一个常量的名称。


更改枚举的默认字符串值

我们可以通过覆盖该toString()方法来更改枚举常量的默认字符串表示形式。例如,

enum Size {
   SMALL {

      // overriding toString() for SMALL
      public String toString() {
        return "The size is small.";
      }
   },

   MEDIUM {

     // overriding toString() for MEDIUM
      public String toString() {
        return "The size is medium.";
      }
   };
}

class Main {
   public static void main(String[] args) {
      System.out.println(Size.MEDIUM.toString());
   }
}

输出

The size is medium.

在上面的程序中,我们创建了一个枚举 尺寸. 我们已经覆盖了toString()枚举常量SMALL和的方法MEDIUM

注意:我们不能覆盖该name()方法。这是因为name()方法是final.

要了解更多信息,请访问创建枚举 String 的最佳方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值