class A
{
{
A a = new A();
a.setState(MenuList.AAA);
a.setState(MenuList.BBB);
a.setState(MenuList.CCC);
}
enum MenuList {
AAA {
void setState(A a) {
a.hoge1();
a.hoge2();
}
},
BBB {
void setState(A a) {
a.hoge3();
}
},
CCC {
void setState(A a) {
a.hage();
}
};
abstract void setState(A a);
}
void setState(MenuList state)
{
System.
out.
printf("setState(%s)%n", state
); state.setState(this);
}
void hoge1()
{
}
void hoge2()
{
}
void hoge3()
{
}
void hage()
{
System.
out.
println("(´・ω・`)"); }
}
Y2xhc3MgQQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlBIGEgPSBuZXcgQSgpOwoJCWEuc2V0U3RhdGUoTWVudUxpc3QuQUFBKTsKCQlhLnNldFN0YXRlKE1lbnVMaXN0LkJCQik7CgkJYS5zZXRTdGF0ZShNZW51TGlzdC5DQ0MpOwoJfQoKCWVudW0gTWVudUxpc3QgewoJCUFBQSB7CgkJCXZvaWQgc2V0U3RhdGUoQSBhKSB7CgkJCQlhLmhvZ2UxKCk7CgkJCQlhLmhvZ2UyKCk7CgkJCX0KCQl9LAoKCQlCQkIgewoJCQl2b2lkIHNldFN0YXRlKEEgYSkgewoJCQkJYS5ob2dlMygpOwoJCQl9CgkJfSwKCgkJQ0NDIHsKCQkJdm9pZCBzZXRTdGF0ZShBIGEpIHsKCQkJCWEuaGFnZSgpOwoJCQl9CgkJfTsKCgkJYWJzdHJhY3Qgdm9pZCBzZXRTdGF0ZShBIGEpOwoJfQoKCXZvaWQgc2V0U3RhdGUoTWVudUxpc3Qgc3RhdGUpCgl7CgkJU3lzdGVtLm91dC5wcmludGYoInNldFN0YXRlKCVzKSVuIiwgc3RhdGUpOwoJICAgIHN0YXRlLnNldFN0YXRlKHRoaXMpOwoJfQoKCXZvaWQgaG9nZTEoKQoJewoJCVN5c3RlbS5vdXQucHJpbnRsbigiaG9nZTEiKTsKCX0KCgl2b2lkIGhvZ2UyKCkKCXsKCQlTeXN0ZW0ub3V0LnByaW50bG4oImhvZ2UyIik7Cgl9CgoJdm9pZCBob2dlMygpCgl7CgkJU3lzdGVtLm91dC5wcmludGxuKCJob2dlMyIpOwoJfQoJCgl2b2lkIGhhZ2UoKQoJewoJCVN5c3RlbS5vdXQucHJpbnRsbigi5b2h4oyS44OfIik7CgkJU3lzdGVtLm91dC5wcmludGxuKCIowrTvvaXPie+9pWApIik7Cgl9Cn0=