java中枚举的常见用法

2020-12-22 14:28

阅读:568

标签:inter   comm   @param   实例   static   其他   string   for   api   

java中枚举的常见用法

 

概念:

首先枚举是一个特殊的class,所有的枚举都继承自java.lang.Enum类。由于Java 不支持多继承,所以枚举对象不能再继承其他类

他的构造方法强制被私有化。每个枚举变量都是枚举类的实例,每个成员变量都是final static修饰

 

一、枚举型常量

public enum ColorEnum {
    //每个枚举变量都是枚举类ColorEnum的实例,相当于RED=new ColorEnum(1),按序号来。
    //每个成员变量都是final static修饰
    RED, GREEN, BLANK, YELLOW;
}

 

二、带一个参数的枚举

public enum TypeEnum {

    FIREWALL("firewall"),  
    SECRET("secretMac"),  
    BALANCE("f5");  

    private String typeName;  

    TypeEnum(String typeName) {  
        this.typeName = typeName;  
    }  

    /** 
     * 根据类型的名称,返回类型的枚举实例。 
     * 
     * @param typeName 类型名称 
     */  
    public static TypeEnum fromTypeName(String typeName) {  
        for (TypeEnum type : TypeEnum.values()) {  
            if (type.getTypeName().equals(typeName)) {  
                return type;  
            }  
        }  
        return null;  
    }  

    public String getTypeName() {  
        return this.typeName;  
    }    
}

 

三、Java枚举实现接口

为什么要通过枚举实现接口呢?考虑如下需求: 
1.我希望通过接口定义API 
2.我希望接口的实现类有限,并且每个实现类都只需要一个实例 
此时,可以利用枚举类型实例受限的特效,通过枚举实现接口,从而达到我们的需求。

public interface FlyAble {
    public void fly();
    public String getName();
}
public enum FlyType implements FlyAble{
    Bird("鸟") {

        @Override
        public void fly() {
            System.out.println("鸟用翅膀飞...");
        }

    },
    Plane("飞机") {

        @Override
        public void fly() {
            System.out.println("飞机用引擎飞...");
        }

    }
    ;

    private String name;

    private FlyType(String name) {
        this.name = name;
    }


    @Override
    public String getName() {
        return name;
    }
}

 

java中枚举的常见用法

标签:inter   comm   @param   实例   static   其他   string   for   api   

原文地址:https://www.cnblogs.com/dw3306/p/13215491.html


评论


亲,登录后才可以留言!