Java基础教程——枚举类型

枚举类型

枚举类型在JDK 5时引入。

    enum WeekEnum {
        MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY
    }

Java的枚举类java.lang.Enum中,有:
|--private final String name;(定义时可表意的标识符)
|--private final int ordinal;(序数,从0开始)
|--及对应的获取方法。

public class Enum1Common {
    enum WeekEnum {
        MONDAY, TUESDAY, WEDNESDAY, THURDAY, FRIDAY, SATURDAY, SUNDAY
    }
    public static void main(String[] args) {
        System.out.println("枚举类型标识符:" + WeekEnum.FRIDAY);
        for (WeekEnum day : WeekEnum.values()) {
            System.out.print("直接输出:" + day);// toString()
            System.out.print("\t name:" + day.name());
            System.out.println("\t ordinal:" + day.ordinal());// 序数
        }
    }
}

枚举类型标识符:FRIDAY
直接输出:MONDAY name:MONDAY ordinal:0
直接输出:TUESDAY name:TUESDAY ordinal:1
直接输出:WEDNESDAY name:WEDNESDAY ordinal:2
直接输出:THURDAY name:THURDAY ordinal:3
直接输出:FRIDAY name:FRIDAY ordinal:4
直接输出:SATURDAY name:SATURDAY ordinal:5
直接输出:SUNDAY name:SUNDAY ordinal:6

*枚举是“特殊的类”

枚举类型是一种“特殊的类”,
它可以有自己的属性和方法(包括构造方法)。
枚举类的构造器只能使用private访问控制符;
如果省略访问控制符,还是private。

// 枚举类也可以有变量和方法
public class Enum2Member {
    public static void main(String[] args) {
        System.out.println(GenderEnum.MALE + ":" + GenderEnum.MALE.getLabel());
        // Enum.valueOf():获取指定枚举类的枚举值
        GenderEnum g = Enum.valueOf(GenderEnum.class, "FEMALE");
        System.out.println(g + ":" + g.getLabel());
    }
}
enum GenderEnum {
    MALE("男"), FEMALE("女");// 必须第一行
    // ----------------------------------
    // 枚举类的属性值应该使用private final修饰
    private final String label;
    // 枚举类一旦写带参构造器(必须private),列出枚举值时必须传参
    private GenderEnum(String label) {
        this.label = label;
    }
    public String getLabel() {
        return this.label;
    }
}
MALE:男
FEMALE:女

*枚举类可以实现接口

// 枚举类可以继承接口
public class Enum3Impl {
    public static void main(String[] args) {
        System.out.println(ImplEnum.PLUS.eval(3, 2));
        System.out.println(ImplEnum.MINUS.eval(3, 2));
    }
}
interface IOperation {
    double eval(double x, double y);
}
enum ImplEnum implements IOperation {
    PLUS {
        public double eval(double x, double y) {
            return x + y;
        }
    },
    MINUS {
        public double eval(double x, double y) {
            return x - y;
        }
    }
}
5.0
1.0

*枚举类的抽象方法

枚举类本身可以定义抽象方法,由各枚举值实现。

// 枚举类可以定义“抽象方法”,并由枚举值实现
public class Enum4Abstract {
    public static void main(String[] args) {
        System.out.println(AbstractEnum.TIMES.eval(3, 2));
        System.out.println(AbstractEnum.DIVIDE.eval(3, 2));
    }
}
enum AbstractEnum {
    TIMES {
        public double eval(double x, double y) {
            return x * y;
        }
    },
    DIVIDE {
        public double eval(double x, double y) {
            return x / y;
        }
    };
    // 定义抽象方法(必须在枚举值之后定义)
    // 由各枚举值 提供 具体实现
    public abstract double eval(double x, double y);
}
6.0
1.5

转载于:https://www.cnblogs.com/tigerlion/p/11182830.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值