Java 枚举类详解

1. 什么是枚举类?

枚举类(enum)是 Java 中用于表示一组常量的特殊类。每个枚举常量在内部是 Enum 类的一个实例对象。枚举常量不可变,并且它们在 JVM 中是单例的,即每个枚举常量在整个程序中只有一个实例。

2. 枚举类的定义

下面是两个简单的枚举类的定义示例:

public enum EnumTest {
    INSERT,UPDATE; //默认调用无参构造器
}

 在 EnumTest 枚举类中,定义了两个枚举常量:INSERTUPDATE。这些常量默认调用无参构造器,且它们是 EnumTest 类的实例。

public enum Size {
    SMALL("S"), MEDIUM("M"), LARGE("L"), EXTRA_LARGE("XL");
 
    private String abbreviation;
 
    Size(String abbreviation) {
        this.abbreviation = abbreviation;
    }
 
    public String getAbbreviation() {
        return abbreviation;
    }
}

Size 枚举类中,每个枚举常量都有一个额外的字段 abbreviation,用来表示它的缩写。该类有一个带参数的构造器,用于为每个枚举常量设置缩写。

3. 枚举类的构造器

  • 枚举类的构造器是私有的,只能在枚举类内部调用。这样可以确保枚举常量的唯一性。
  • 枚举常量是单例的,即在程序运行时,枚举常量只有一个实例。

4. 使用枚举类

在使用枚举类时,你可以通过枚举常量来访问它们的值和其他成员。

    @Test    
    public void testEnum() {
        EnumTest insert = EnumTest.INSERT;
        System.out.println(insert);  // 输出:INSERT
    }

在这个例子中,EnumTest.INSERT 访问了枚举常量 INSERT,并通过 System.out.println(insert) 输出常量的名称。默认情况下,toString() 方法会返回常量名称,即 INSERT

    @Test
    public void testEnum2(){
        Size small = Size.SMALL;
        System.out.println(small.getAbbreviation());// 输出:S
        System.out.println(small); //输出:SMALL
    }

Size 枚举类中,small.getAbbreviation() 输出枚举常量 SMALL 对应的缩写 S,而 System.out.println(small) 输出的是枚举常量的名称 SMALL,这是因为 toString() 方法返回常量名称。

5. 默认 toString() 方法

所有枚举类都会隐式继承 java.lang.Enum 类,而 Enum 类提供了一个默认的 toString() 方法。该方法返回的是枚举常量的名称,而不是其他自定义的值。如果需要不同的输出,可以覆盖 toString() 方法。

例如,若需要输出枚举常量的缩写,可以这样做:

    @Override 
    public String toString() { 
        return this.abbreviation; 
    }

 

 

你可能感兴趣的:(java)