java枚举类

使用enum声明,默认直接继承了java.lang.Enum类,而不是Object类;

枚举类的对象是固定的,实例个数有限,不可以再new( ),枚举对象后可以跟()。

枚举元素必须位于枚举类体中的最开始部分,枚举元素后要有分号与其他成员分隔。

枚举类的构造方法的权限修饰符默认是private;

一旦枚举对象后面加上{},那么该对象实际是枚举匿名内部类对象;

所有枚举类都提供一个静态的values()方法(返回该枚举类所有对象组成的数组),便于遍历所有枚举对象;

所有枚举类都提供一个静态的valueOf(String name)方法, 返回枚举类中对象名等于 name的对象。

 

Egpublic enum Color{

       RED(), GREEN(){}, BLUE{};

}

 

 

package reviewDemo;

//枚举

enum Color{

    Green,Blue,Yellow;

   

    @Override

    public String toString() {

        String ret = super.toString();

        switch (this) {

        case Green:

            ret = "绿色";

            break;

           

        case Blue:

            ret = "蓝色";

            break;

           

        case Yellow:

            ret = "黄色";

            break;

        default:

            break;

        }

       

        return ret;

    }

   

}

class Personp{

    Color c = Color.Blue;

    void show(){

        System.out.println(c);

    }

}

public class Demo18 {

    public static void main(String[] args) {

        Color []color = Color.values();

        for (Color c : color) {

            System.out.println(c);

        }

        new Personp().show();

    }

}

输出:

绿色

蓝色

黄色

蓝色

 

枚举类覆写接口抽象方法的两种方式:

在枚举类中实现接口的抽象方法;

在枚举匿名内部类中实现接口的抽象方法;

 

interface I{

    void show();

}

enum Color implements I{

    RED(){

    public void show(){

        }

    }, GREEN{

    public void show(){

        }

    }, BLUE{

    public void show(){

        }

    };

}

enum Color implements I{

    RED(), GREEN, BLUE;

    public void show() {

    }

}

 

 

 

 

我的总结:

枚举不可以new();即便是反射也不可以!

 

 

备注:一个类如果没有构造方法,那么一定有相对应的某个方法可以获取对象!

 

原文地址:https://www.cnblogs.com/fanweisheng/p/11131702.html