package ch19enums;//: enumerated/CarWash.java
import java.util.*;
import static net.mindview.util.Print.*;
public class CarWash {
/**
* 常量相关方法,比匿名内部类更高效
*/
public void wash() {
CarWash wash = new CarWash();
print(wash);
wash.washCar();
// Order of addition is unimportant:
wash.add(Cycle.BLOWDRY);
wash.add(Cycle.BLOWDRY); // Duplicates ignored
wash.add(Cycle.RINSE);
wash.add(Cycle.HOTWAX);
print(wash);
wash.washCar();
}
public enum Cycle {
UNDERBODY {
void action() {
print("Spraying the underbody");
}
},
WHEELWASH {
void action() {
print("Washing the wheels");
}
},
PREWASH {
void action() {
print("Loosening the dirt");
}
},
BASIC {
void action() {
print("The basic wash");
}
},
HOTWAX {
void action() {
print("Applying hot wax");
}
},
RINSE {
void action() {
print("Rinsing");
}
},
BLOWDRY {
void action() {
print("Blowing dry");
}
};
abstract void action();
}
EnumSet<Cycle> cycles = EnumSet.of(Cycle.BASIC, Cycle.RINSE);
private void add(Cycle cycle) {
cycles.add(cycle);
}
private void washCar() {
for (Cycle c : cycles)
c.action();
}
public String toString() {
return cycles.toString();
}
} /*
* Output: [BASIC, RINSE] The basic wash Rinsing [BASIC, HOTWAX, RINSE, BLOWDRY]
* The basic wash Applying hot wax Rinsing Blowing dry
*/// :~