package com.jingsong.test;
public class JSONFeatureTest {
public static void main(String[] args) {
int defaultHobbies = Hobby.getDefaultHobbies();
System.out.println("defaultHobbies = " + defaultHobbies);
boolean likeEat = Hobby.isLike(defaultHobbies, Hobby.eat);
System.out.println("likeEat = " + likeEat);
boolean likeShopping = Hobby.isLike(defaultHobbies, Hobby.shopping);
System.out.println("likeShopping = " + likeShopping);
int addHobby = Hobby.addHobby(defaultHobbies, Hobby.study);
System.out.println("addHobby = " + addHobby);
int cancelHobby = Hobby.cancelHobby(defaultHobbies, Hobby.sleep);
System.out.println("cancelHobby = " + cancelHobby);
int hobbies = Hobby.recordHobbies(Hobby.study, Hobby.sleep, Hobby.shopping, Hobby.run);
System.out.println("hobbies = " + hobbies);
}
}
enum Hobby {
eat,
run,
drink,
study,
sleep,
shopping
;
private final int mask;
Hobby() {
mask = (1 << ordinal());
}
public static boolean isLike(int hobbies, Hobby hobby) {
return (hobby.mask & hobbies) != 0;
}
public static int getDefaultHobbies() {
int defaultHobbies = 0;
defaultHobbies |= eat.mask;
defaultHobbies |= drink.mask;
defaultHobbies |= sleep.mask;
return defaultHobbies;
}
public static int addHobby(int hobbies, Hobby hobby) {
return hobbies |= hobby.mask;
}
public static int cancelHobby(int hobbies, Hobby hobby) {
return hobbies &= ~hobby.mask;
}
public static int recordHobbies(Hobby... hobbies) {
int h = 0;
for (Hobby hobby : hobbies) {
h |= hobby.mask;
}
return h;
}
}