java 可以 继承的枚举 怎么写?

2025-02-26 06:55:43
推荐回答(1个)
回答1:

import java.util.ArrayList;
import java.util.List;

public class Color{
    private String value;
    private static List colors = new ArrayList();
    public Color(String value) {
        this.value = value;
        colors.add(this);
    }
    public static Color Red = new Color("red");
    public static Color Blud = new Color("Blud");
    public static Color Green = new Color("Green");
    
    public void test(){
        System.out.println("我是"+value);
    }

    public static Color[] values(){
        return colors.toArray(new Color[colors.size()]);
    }
    
    public static void main(String[] args) {
        Color.Red.test();
        Color.Green.test();
        ColorB.black.test();
        
        for (Color c : ColorB.values()) {
            c.test();
        }
    }
    
}

/**
 * 子类
 * @author 储宝
 *
 */
class ColorB extends Color{
    public ColorB(String value) {
        super(value);
    }
    
    public static ColorB  black = new ColorB("black");
    
}

枚举的伪实现。和枚举不同的是,还是可以new一个对象,本来是想把构造私有化的,但是就不能继承了。