在Java中,我们可以通过static final来定义常量。例如,我们希望定义周一到周日这7个常量,可以用7个不同的int表示:
public class Weekday {
public static final int SUN = 0;
public static final int MON = 1;
public static final int TUE = 2;
public static final int WED = 3;
public static final int THU = 4;
public static final int FRI = 5;
public static final int SAT = 6;
}
使用常量的时候,可以这么引用:
if (day == Weekday.SAT || day == Weekday.SUN) {
// TODO: work at home
}
也可以把常量定义为字符串类型,例如,定义3种颜色的常量:
public class Color {
public static final String RED = "r";
public static final String GREEN = "g";
public static final String BLUE = "b";
}
使用常量的时候,可以这么引用:
String color = "red";
if (Color.RED.equals(color)) {
// TODO:
}
1. 枚举
类似上面一些特殊业务的常量,可以用枚举来表示。枚举使用关键字enum
。
- 星期
public enum Weekday {
MON, TUE, WED, THU, FRI, SAT, SUN;
}
- 颜色
public enum Color {
RED, GREEN, BLUE;
}
枚举类和其他类基本没什么区别,但有几点需要注意:
- 每个枚举的值都是当前
class
实例(RED 的类型是 Color) - 定义的
enum
类型总是继承自java.lang.Enum
,且无法被继承(因枚举类是final的); - 只能定义出
enum
的实例,而无法通过new
操作符创建enum
的实例; - 定义的每个实例都是引用类型的唯一实例;
- 枚举类实例的方法:
-
name()
:返回常量名,String s = Weekday.SUN.name(); // "SUN"
-
ordinal()
:返回定义的常量的顺序,从0开始计数,int n = Weekday.MON.ordinal(); // 1
-
2. 枚举的用法
这里用一个最常用的来说明,在定义code和message的时候。
向枚举类中添加自定义属性和构造函数
public enum CodeMsg {
SUCCESS("1000", "success"),
ERROR("4000", "error");
@Getter
private String code;
@Getter
private String msg;
CodeMsg (String code, String msg) {
this.code = code;
this.msg = msg;
}
}
使用时:
public class Main {
public static void main(String[] args) {
System.out.println(CodeMsg.SUCCESS.getCode());
System.out.println(CodeMsg.SUCCESS.getMsg());
}
}
网友评论