枚举

作者: 平头哥2015 | 来源:发表于2018-12-07 19:47 被阅读0次

从JDK 5开始,枚举被添加到Java语言中。在Java中,枚举被定义为类,可以具有构造函数,方法以及实例变量。

基础知识

枚举的声明

创建枚举需要使用关键字enum,例如:

public enum Fruit {

    APPLE, BANANA, ORANGE, PEACH

}

APPLE, BANANA等称为枚举常量,这些常量被隐式地声明为public static final成员,并且都是Fruit类型(自类型化)。

枚举的特点

枚举虽然被定义为类,但是不能通过new来实例化枚举。枚举变量的声明和使用在许多方面与基本类型相同。

  • 枚举变量只能被赋值为在该枚举类型中定义的枚举常量。
Fruit fruit = Fruit.APPLE;
  • 可以使用关系运算符“==”比较两个枚举对象是否相等。
fruit == Fruit.BANANA;
  • 枚举值也可以用于控制switch语句。
switch (fruit) {
    case APPLE:
        // ...
    case BANANA:
        // ...
}

注意:在case语句中,枚举常量没有使用枚举类型进行限定,这是因为switch表达式中的枚举类型已经隐式指定了case常量的枚举类型。

  • 枚举常量的toString()方法返回常量的名称。
System.out.println(Fruit.BANANA); // BANANA

预定义方法

所有枚举都自动包含两个预定义方法:values()和valueOf()。

values方法

values()返回包含枚举常量列表的数组。一般形式如下:
public static enum-type[] values()

例子

Fruit[] fruits = Fruit.values();
for (Fruit fruit : fruits) {
    System.out.println(fruit);
}

valueOf方法

valueOf()返回传入的字符串参数对应的枚举常量。一般形式如下:
public static enum-type valueOf(String name)

例子

Fruit fruit = Fruit.valueOf("ORANGE");
System.out.println(fruit); // ORANGE

枚举是类类型

虽然不能用new实例化枚举,但是枚举却有许多和其他类相同的功能,比如枚举可以有构造函数、实例变量和方法,甚至可以实现接口。

public enum Fruit {

    APPLE(10), BANANA(1), ORANGE(2), PEACH;

    private int price;

    Fruit() {
        price = 8;
    }

    Fruit(int price) {
        this.price = price;
    }

    public int getPrice() {
        return price;
    }

}

虽然枚举是类类型,但是枚举有两条限制使得它不能扩展。

  • 枚举不能继承其它类。
  • 枚举不能被其它类继承。

枚举继承自Enum类

尽管声明枚举时不能继承其它类,但是所有枚举都自动继承父类java.lang.Enum。这个类定义了所有枚举都可以使用的一些方法。

  • name()方法获取枚举常量的名称。
  • ordinal()方法获取枚举常量在常量列表中的位置的值,称为枚举常量的序数值。序数值从0开始。
  • compareTo()方法比较相同类型的两个枚举常量的序数值。
  • equals()方法比较枚举常量和其他对象是否相等。只有当两个对象都引用同一个枚举中相同的常量时,它们才相等。

相关文章

  • C#枚举及与枚举常数的转换

    1、枚举的定义 2、枚举绑定到comboBox 3、枚举常数转换为枚举string转枚举 数字值转枚举

  • Swift 基础笔记 - 枚举

    枚举 OC定义和使用枚举 Swift定义枚举类型 Swift判断枚举类型 枚举成员类型

  • 枚举类

    1.枚举类型的定义: 枚举类型定义的一般形式为 enum 枚举名{//枚举值表枚举值1;枚举值2;...} 在枚举...

  • 10、枚举与闭包

    枚举 枚举和普通类相比有什么优势 枚举类型、枚举名称与枚举值 枚举的比较运算 两个枚举之间可以使用等值比较(==)...

  • Swift与OC的语法简单对比(常用语法二)

    20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...

  • Swift 2 学习笔记 10.枚举

    课程来自慕课网liuyubobobo老师 枚举 枚举基础 枚举之原始值 枚举之关联值 枚举递归

  • swift3语法(八)

    枚举/结构体 枚举 定义形式enum 枚举名 { 枚举值} // 例如enum CompassPoint {...

  • C语言基础 之 枚举类型

    枚举类型 枚举类型: 列出所有可能的值 枚举类型的定义 枚举类型定义的一般格式:enum 枚举类型名 {枚举值表}...

  • 枚举

    枚举 Why:为什么需要枚举 What:枚举是什么; How:枚举怎么实现 When:枚举什么时候使用 Where...

  • 枚举的概念及应用

    一、枚举的概念 二、枚举类型的定义 三、枚举变量的定义 四、枚举使用的注意 五、枚举变量的基本操作 五、枚举变量的...

网友评论

      本文标题:枚举

      本文链接:https://www.haomeiwen.com/subject/ocyxhqtx.html