文字列から特定のオブジェクトを取得するのに、Mapもよくある手段だが、
コンパイル段階から決まってる固定のものを取得するのに、enum が便利。
こういう視点を忘れないようにしたいものだ。
valueOf("enumを示す文字列") -> enum値
実際コードもたいしたものでもない。cheap なんだろうけど。
DB検索結果や通信結果から、特定するオブジェクトの実行に応用する場面もあるだろう。
===サンプル===
public static void main(String[] args) throws InstantiationException, IllegalAccessException{
COLOR c = COLOR.valueOf("RED");
System.out.println(c.name());
Class<? extends Colorpaper> cls = c.getPoint();
Colorpaper cc = cls.newInstance();
System.out.println(cc.getColor());
}
static enum COLOR{
RED(Redpaper.class),
BLUE(Bluepaper.class),
GREEN(Greenpaper.class);
//
private Class<? extends Colorpaper> cls;
private COLOR(Class<? extends Colorpaper> cls){
this.cls = cls;
}
public Class<? extends Colorpaper> getPoint(){
return this.cls;
}
}
-----------------
public interface Colorpaper{
public String getColor();
}
-----------------
public class Redpaper implements Colorpaper{
@Override
public String getColor(){
return "Red";
}
}