枚举:enum

枚举

所谓枚举就是指定好取值范围,所有内容只能从指定范围取得

例如,想定义一个color类,他只能有RED,GREEN,BLUE三种植。

使用简单类完成颜色固定取值问题。

1,就是说,一个类只能完成固定几个对象。

public enum Color{
    RED,GREEN,BLUE ;    // 定义三个枚举的类型
};

第一种方法:传统的设定固定值,通过使得构造方法私有化(使得值固定几个,不可从外部修改),通过单态模式。

代码如下:

package 类集;
class Color{
    public static final Color RED = new Color("红色") ;    // 定义第一个对象
    public static final Color GREEN = new Color("绿色") ;    // 定义第一个对象
    public static final Color BLUE = new Color("蓝色") ;    // 定义第一个对象
    private String name ;
    private Color(String name){
        this.name = name ;
    }
    public void setName(String name){
        this.name = name ;
    }
    public String getName(){
        return this.name ;
    }
    public static Color getInstance(int i){
        switch(i){
            case 1:{
                return RED ;
            }
            case 2:{
                return GREEN ;
            }
            case 3:{
                return BLUE ;
            }default:{
                return null ;
            }
        }

    }
};
public class test1{
    public static void main(String args[]){
        Color c1 = Color.RED ;    // 取得红色
        System.out.println(c1.getName()) ;    // 输出名字
        Color c2 = Color.getInstance(3) ;    // 根据编号取得名字
        System.out.println(c2.getName()) ;
    }
};

输出结果:

红色
蓝色

此时程序限定了范围,达到了枚举的功能。

枚举定义格式如下:

 emum 枚举类型名称{
     枚举对象1,枚举对象2,枚举对象3,,;
}

JAVA库中颜色枚举的定义如下:

public enum Color{
    RED,GREEN,BLUE ;    // 定义三个枚举的类型
};

使用:

package 类集;
import java.awt.Color;
public class test1{
    public static void main(String args[]){
        Color c = Color.BLUE ;        // 取出蓝色
        System.out.println(c) ;
    }
};

因为枚举已经定义好了范围,所以可以使用foreach进行全部的输出,使用“枚举.VALUE()”的形式取得全部内容。

package 类集;
enum color1
{ red,black,green
    }
public class test1{
    public static void main(String args[]){
        for(color1 c:color1.values())
        {
            System.out.println(c);
        }
    }
}

枚举还可以直接将内容在switch语句使用。

package 类集;
enum color1
{ red,black,green
    }
public class test1{
    public static void main(String args[]){
        for(color1 c:color1.values())
        {
            print(c);
        }
    }
    public static void print(color1 color){
        switch(color){
            case red:{
                System.out.println("红颜色") ;
                break ;
            }
            case black:{
                System.out.println("黑颜色") ;
                break ;
            }
            case green:{
                System.out.println("绿颜色") ;
                break ;
            }
            default:{
                System.out.println("未知颜色") ;
                break ;
            }
        }
    }
};

总结:使用枚举可以限制取值的范围。

   可以使用enum定义取值。

原文地址:https://www.cnblogs.com/alsf/p/6259941.html