Java面试知识点(二十九)Java枚举类enum

枚举类enum

示例代码

enum Color{
          
   
    RED,BLUE,YELLOW;
}

enum 和 class、interface 的地位一样 枚举(enum)类型是 Java 5 新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全(类型安全的代码不会试图访问自己没被授权的内存区域)的形式来表示。

使用 enum 定义的枚举类默认继承了 java.lang.Enum,而不是继承 Object 类。枚举类可以实现一个或多个接口。

枚举类的所有实例都必须放在第一行展示,不需使用 new 关键字,不需显式调用构造器。自动添加 public static final 修饰。

使用 enum 定义、非抽象的枚举类默认使用 final 修饰,不可以被继承。

枚举类的构造器只能是私有的。

示例代码

enum Color{
          
   
    RED,BLUE,YELLOW;
    Color(){
          
   
        System.out.println("this is enum constructor");
    }
}

class testClass{
          
   
    public testClass(){
          
   
        System.out.println("this is common class");
    }
}

public class testEnum {
          
   
    public static void main(String args[]){
          
   
        System.out.println(Color.RED);
    }
}

执行结果: this is enum constructor this is enum constructor this is enum constructor RED

示例代码

package enumcase;

public enum SeasonEnum {
          
   
    SPRING("春天"),SUMMER("夏天"),FALL("秋天"),WINTER("冬天");
    
    private final String name;
    
    private SeasonEnum(String name)
    {
          
   
        this.name = name;
    }

    public String getName() {
          
   
        return name;
    }
}

实际上在第一行写枚举类实例的时候,默认是调用了构造器的,所以此处需要传入参数,因为没有显式申明无参构造器,只能调用有参数的构造器。

构造器需定义成私有的,这样就不能在别处申明此类的对象了。枚举类通常应该设计成不可变类,它的 Field 不应该被改变,这样会更安全,而且代码更加简洁。所以我们将 Field 用 private final 修饰。

经验分享 程序员 微信小程序 职场和发展