2021SC@SDUSC
public enum Operation {}是枚举类型
枚举常用方法如下
一,常量定义
public enum WeekDay {
SUN, MON, TUE, WED, THT, FRI, SAT
}
二,swich
public enum WeekDay {
SUN, MON, TUE, WED, THT, FRI, SAT
}
public class SelectDay{
WeekDay weekday = WeekDay.SUN;
public void select(){
switch(weekday){
case SUN:
weekday = WeekDay.SUN;
break;
...
}
}
}
三,向枚举添加新方法
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
四,覆盖枚举方法
public enum Color {
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name; private int index;
// 构造方法
private Color(String name, int index) {
this.name = name; this.index = index;
}
//覆盖方法
@Override
public String toString() {
return this.index+"_"+this.name;
}
}
五,实现接口
public interface Behaviour {
void print();
String getInfo();
}
public enum Color implements Behaviour{
RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
// 成员变量
private String name;
private int index;
// 构造方法
private Color(String name, int index) {
this.name = name; this.index = index;
}
//接口方法
@Override
public String getInfo() {
return this.name;
}
//接口方法
@Override
public void print() {
System.out.println(this.index+":"+this.name);
}
}
六,接口组织枚举
public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert implements Food{
FRUIT, CAKE, GELATO
}
}
七,枚举集合
public class Test {
public static void main(String[] args) {
EnumSet<WeekDay> week = EnumSet.noneOf(WeekDay.class);
week.add(WeekDay.MON);
System.out.println("EnumSet中的元素:" + week);
week.remove(WeekDay.MON);
System.out.println("EnumSet中的元素:" + week);
week.addAll(EnumSet.complementOf(week));
System.out.println("EnumSet中的元素:" + week);
week.removeAll(EnumSet.range(WeekDay.FRI, WeekDay.SAT));
System.out.println("EnumSet中的元素:" + week);
}
这个方法的代码如下
/**
* 必须传的字段,结构是
* "key0,key1,key2..."
*/
MUST,
/**
* 不允许传的字段,结构是
* "key0,key1,key2..."
*/
REFUSE,
/**TODO 是否应该把数组类型写成 BOOLEANS, NUMBERS 等复数单词,以便抽取 enum ?扩展用 VERIFY 或 INSERT/UPDATE 远程函数等
* 验证是否符合预设的类型:
* BOOLEAN, NUMBER, DECIMAL, STRING, URL, DATE, TIME, DATETIME, OBJECT, ARRAY
* 或它们的数组
* BOOLEAN[], NUMBER[], DECIMAL[], STRING[], URL[], DATE[], TIME[], DATETIME[], OBJECT[], ARRAY[]
* 结构是
* {
* key0: value0,
* key1: value1,
* key2: value2
* ...
* }
* 例如
* {
* "id": "NUMBER", //id 类型必须为 NUMBER
* "pictureList": "URL[]", //pictureList 类型必须为 URL[]
* }
* @see {@link AbstractVerifier#verifyType(String, String, Object, boolean)}
*/
TYPE,
/**
* 验证是否符合预设的条件,结构是
* {
* key0: value0,
* key1: value1,
* key2: value2
* ...
* }
* 例如
* {
* "phone~": "PHONE", //phone 必须满足 PHONE 的格式,配置见 {@link AbstractVerifier#COMPILE_MAP}
* "status{}": [1,2,3], //status 必须在给出的范围内
* "balance&{}":">0,<=10000" //必须满足 balance>0 & balance<=10000
* }
*/
VERIFY,
/**TODO 格式改为 id;version,tag 兼容多个字段联合主键。 ["id", "version,tag"] 也行
* 验证是否存在,结构是
* "key0,key1,key2..."
*/
EXIST,
/**TODO 格式改为 id;version,tag 兼容多个字段联合主键。 ["id", "version,tag"] 也行
* 验证是否不存在,除了本身的记录,结构是
* "key0,key1,key2..."
*/
UNIQUE,
/**
* 添加,当要被添加的对象不存在时,结构是
* {
* key0: value0,
* key1: value1,
* key2: value2
* ...
* }
*/
INSERT,
/**
* 强行放入,不存在时就添加,存在时就修改,结构是
* {
* key0: value0,
* key1: value1,
* key2: value2
* ...
* }
*/
UPDATE,
/**
* 替换,当要被替换的对象存在时,结构是
* {
* key0: value0,
* key1: value1,
* key2: value2
* ...
* }
*/
REPLACE,
/**
* 移除,当要被移除的对象存在时,结构是
* "key0,key1,key2..."
*/
REMOVE;
定义了一些常量和使用方法以及注释,供其他类使用