枚举类型

枚举类型在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

最新文章

  1. 基数排序 java 实现
  2. WPF样式
  3. ggplot绘图学习笔记
  4. Appium-android环境的快速搭建
  5. POJ3461 Oulipo KMP算法
  6. 【HDOJ】1016 Prime Ring Problem
  7. QT完美转换特殊字符的大小写
  8. Newtonsoft.Json 将C#对象转化为json格式
  9. 【转】IntelliJ IDEA中文乱码问题
  10. 使用Http-Repl工具测试ASP.NET Core 2.2中的Web Api项目
  11. hdu3642扫描线 长方体
  12. python 爬虫资料
  13. URAL - 1397:Points Game (博弈,贪心)
  14. mysql 查询缓存优化文章
  15. 【基本功】深入剖析Swift性能优化
  16. java自动识别上传的apk版本号
  17. Linux中使用SecureCRT上传、下载文件命令sz与rz用法实例
  18. 设置eclipse启动时所需要的jdk
  19. Python之如何删除pandas DataFrame的某一/几列
  20. flask 数据迁移

热门文章

  1. SpringMVC找不到js等文件,有两种方式可以解决这个问题。
  2. Python+Django实现微信扫码支付流程
  3. 白话科普,10s 了解 API
  4. think PHP5.1使用时 session重定向丢失问题
  5. Flink系列(0)——准备篇(流处理基础)
  6. c#提取
  7. 8、Python语法之流程控制
  8. 6、Django之模型层第一篇:单表操作
  9. SpringBoot+MySQL,如何整合并使用MyBatis框架
  10. CSS 三栏自适应布局