Java枚举类

本文为joshua317原创文章,转载请注明:转载自joshua317博客 Java枚举类 - joshua317的博客

Java 枚举是一个特殊的类,一般表示一组常量,比如一年的 4 个季节,一个年的 12 个月份,一个星期的 7 天,方向有东南西北等,订单的状态。

Java 枚举类使用 enum 关键字来定义,各个常量使用逗号 , 来分割。

1.定义一个枚举类。

enum Color 
{ 
    RED, BLUE, YELLOW; 
} 
enum Color
{
    RED, BLUE, YELLOW; 
}
 
public class ColorDemo
{
    // 执行输出结果
    public static void main(String[] args)
    {
        Color c1 = Color.RED;
        Color c2 = Color.BLUE;
        Color c3 = Color.YELLOW;
        System.out.println(c1);
        System.out.println(c2);
        System.out.println(c3);
    }
}

2.内部类中使用枚举

枚举类也可以声明在内部类中

public class ColorDemo
{
    enum Color
    {
        RED, BLUE, YELLOW; 
    }
 
    // 执行输出结果
    public static void main(String[] args)
    {
        System.out.println(Color.RED);
        System.out.println(Color.BLUE);
        System.out.println(Color.YELLOW);
    }
}

3.迭代枚举元素

enum Color
{
    RED, BLUE, YELLOW; 
}
public class ColorDemo {
  public static void main(String[] args) {
    for (Color myVar : Color.values()) {
      System.out.println(myVar);
    }
  }
}

4.在 switch 中使用枚举类

枚举类常应用于 switch 语句中:

enum Color
{
    RED, BLUE, YELLOW; 
}
public class ColorDemo {
  public static void main(String[] args) {
    Color myVar = Color.BLUE;

    switch(myVar) {
      case RED:
        System.out.println("红色");
        break;
      case BLUE:
         System.out.println("绿色");
        break;
      case YELLOW:
        System.out.println("蓝色");
        break;
    }
  }
}

5.values(), ordinal() 和 valueOf() 方法

enum 定义的枚举类默认继承了 java.lang.Enum 类,并实现了 java.lang.Seriablizable 和 java.lang.Comparable 两个接口。

values(), ordinal() 和 valueOf() 方法位于 java.lang.Enum 类中:

  • values() 返回枚举类中所有的值。
  • ordinal()方法可以找到每个枚举常量的索引,就像数组索引一样。
  • valueOf()方法返回指定字符串值的枚举常量。
enum Color
{
    RED, BLUE, YELLOW; 
}
 
public class ColorDemo
{
    public static void main(String[] args)
    {
        // 调用 values()
        Color[] arr = Color.values();
 
        // 迭代枚举
        for (Color col : arr)
        {
            // 查看索引
            System.out.println(col + " at index " + col.ordinal());
        }
 
        // 使用 valueOf() 返回枚举常量,不存在的会报错 IllegalArgumentException
        System.out.println(Color.valueOf("RED"));
        // System.out.println(Color.valueOf("WHITE"));
    }
}

6.枚举类成员

枚举跟普通类一样可以用自己的变量、方法和构造函数,构造函数只能使用 private 访问修饰符,所以外部无法调用。

枚举既可以包含具体方法,也可以包含抽象方法。 如果枚举类具有抽象方法,则枚举类的每个实例都必须实现它。

枚举类中的抽象方法实现,需要枚举类中的每个对象都对其进行实现。

enum Color{
    RED{
        public String color(){//枚举对象实现抽象方法
            return "红色";
        }
    },
    BLUE{
        public String color(){//枚举对象实现抽象方法
            return "蓝色";
        }
    },
    YELLOW{
        public String color(){//枚举对象实现抽象方法
            return "黄色";
        }
    };
    public abstract String color();//定义抽象方法
}

public class ColorDemo{
    public static void main(String[] args) {
        for (Color c:Color.values()){
            System.out.print(c.color() + "、");
        }
    }
}
enum Color {
    /**
     * 颜色-红色
     */
    RED("红色"),
    /**
     * 颜色-蓝色
     */
    BLUE("蓝色"),

    /**
     * 颜色-黄色
     */
    YELLOW("黄色");

    private String color;

    private Color(String color) {
        this.color = color;
    }

    public String color() {
        return color;
    }
}

public class ColorDemo {
    public static void main(String[] args) {
        System.out.println(Color.RED + ":" + Color.RED.color());
        System.out.println(Color.BLUE + ":" + Color.BLUE.color());
        System.out.println(Color.YELLOW + ":" + Color.YELLOW.color());
    }
}

本文为joshua317原创文章,转载请注明:转载自joshua317博客 Java枚举类 - joshua317的博客

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值