Java--枚举类型(枚举类型实现接口 & 枚举类型之间的比较 & 枚举类型用于switch语句)
Posted Z && Y
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java--枚举类型(枚举类型实现接口 & 枚举类型之间的比较 & 枚举类型用于switch语句)相关的知识,希望对你有一定的参考价值。
01: Java–枚举类型(枚举类型介绍 & 定义枚举类型 & 枚举类型的使用 & 枚举类型的注意事项 & 遍历枚举项)
02: Java–枚举类型(枚举类型实现接口 & 枚举类型之间的比较 & 枚举类型用于switch语句)
1. 枚举类型
1.1 枚举类型实现接口
示例:
package character1;
/**
* Description: 系统状态码接口
*/
interface SysTemCode {
// 获得状态码
int getCode();
// 获得状态码的描述
String getDesc();
}
/**
* Description: 系统状态码的枚举类型
*/
enum CodeEnum implements SysTemCode {
ERROR(-1, "系统异常"),
FAILURE(0, "操作失败"),
SUCCESSFUL(1, "操作成功");
private final int code;// 系统状态码
private final String desc;// 系统状态码描述信息
CodeEnum(int code, String desc) {
this.code = code;
this.desc = desc;
}
@Override
public int getCode() {
return this.code;
}
@Override
public String getDesc() {
return this.desc;
}
}
public class Test {
public static void main(String[] args) {
System.out.println("获取错误状态码的信息: ");
System.out.println("code: " + CodeEnum.ERROR.getCode());
System.out.println("desc: " + CodeEnum.ERROR.getDesc());
System.out.println("因为实现了SysTemCode接口, 所以枚举类型可以向上转型为SysTemCode类型");
SysTemCode error = CodeEnum.ERROR;
System.out.println("code: " + error.getCode());
System.out.println("desc: " + error.getDesc());
}
}
运行结果:
1.2 枚举类型之间的比较
- 枚举类型之间可以通过双等号来进行比较,因为枚举类型是一个常量,在内存中的地址只有一份
示例:
package character2;
/**
* MethodName: PayEnum
* Description: 支付参数的枚举类型
*/
public enum PayEnum {
/*
枚举项,采用全部大写的方式命名
枚举项就是一个常量对象(内存地址不变的对象),可以在定义的时候调用构造方法
不加括号WEI_XIN_PAY 或者 WEI_XIN_PAY() 表示调用无参构造方法
*/
WEI_XIN_PAY("weixin", "https://weixin.qq.com/"),
ZHI_FU_BAO_PAY("zhifubao", "https://www.alipay.com/");
private final String payName;// 支付名称
private final String payUrl;// 支付地址
// 定义构造方法, 枚举类型的构造方法是private
private PayEnum(String payName, String payUrl) {
this.payName = payName;
this.payUrl = payUrl;
}
// get方法
public String getPayName() {
return payName;
}
public String getPayUrl() {
return payUrl;
}
}
class Test {
public static void main(String[] args) {
PayEnum muEnum = PayEnum.WEI_XIN_PAY;
System.out.println("muEnum == PayEnum.WEI_XIN_PAY: " + (muEnum == PayEnum.WEI_XIN_PAY));
System.out.println("PayEnum.WEI_XIN_PAY == PayEnum.ZHI_FU_BAO_PAY: " + (PayEnum.WEI_XIN_PAY == PayEnum.ZHI_FU_BAO_PAY));
}
}
运行结果:
1.3 枚举类型用于switch语句
示例:
package character2;
/**
* MethodName: PayEnum
* Description: 支付参数的枚举类型
*/
public enum PayEnum {
/*
枚举项,采用全部大写的方式命名
枚举项就是一个常量对象(内存地址不变的对象),可以在定义的时候调用构造方法
不加括号WEI_XIN_PAY 或者 WEI_XIN_PAY() 表示调用无参构造方法
*/
WEI_XIN_PAY("weixin", "https://weixin.qq.com/"),
ZHI_FU_BAO_PAY("zhifubao", "https://www.alipay.com/");
private final String payName;// 支付名称
private final String payUrl;// 支付地址
// 定义构造方法, 枚举类型的构造方法是private
private PayEnum(String payName, String payUrl) {
this.payName = payName;
this.payUrl = payUrl;
}
// get方法
public String getPayName() {
return payName;
}
public String getPayUrl() {
return payUrl;
}
}
class Test {
public static void main(String[] args) {
int random = (int) (Math.random() * 101);// 获取一个 [0,100] 的随机数
PayEnum myEnum;
/*
* Description: 如果生成的随机数是偶数 则myEnum为微信支付类型
* 否则myEnum为支付宝支付类型
*/
if (random % 2 == 0) {
myEnum = PayEnum.WEI_XIN_PAY;
} else {
myEnum = PayEnum.ZHI_FU_BAO_PAY;
}
switch (myEnum) {
case WEI_XIN_PAY:
System.out.println("微信支付...");
break;
case ZHI_FU_BAO_PAY:
System.out.println("支付宝支付...");
break;
default:
System.out.println("支付异常!!!");
break;
}
}
}
运行结果:
以上是关于Java--枚举类型(枚举类型实现接口 & 枚举类型之间的比较 & 枚举类型用于switch语句)的主要内容,如果未能解决你的问题,请参考以下文章