2008/12/12

FlexでEnum

JavaにしろFlexにしろ、堅く作ろうと思うと、単にstatic const (Javaならstatic final)を付けて定数を使ったりするわけですが、もうちょっと行くと、やはりENUMとかを使いたいところ。

典型的な用途としては、DBのカラムに入っているフラグですよね。
性別を格納するのに'M'か'F'なのはいいとして、それをプログラムの中で文字列とかで判定したくはない・・・。
まぁ、この例においてその要素が増えるとは思わないけれど、増えた時とか、型が明確なので非常に影響範囲が特定しやすいわけで。
反対に定数だと、定数を使わずにハードコードされたりしたら目も当てられないしな。

というわけで是非とも使いたんですが、
「Flexだとサポートされないし」
「ましてやJavaのENUMをFlexにマップするなんてできんだろうし」
と悩んでいたところ、それっぽくはできるようです。

http://flexblog.faratasystems.com/?p=242

ただし、FlexのENUMは完全にインスタンスをENUMで宣言したものだけにできるわけではなく、「同じ値を意味するけどインスタンスは別」という状況になる模様。
まぁ、ここまでできればequals()みたいなのを使ってやればいいので、だいたいOKかな。

もう一個の問題は、私んとこだとS2Flex2とか使うんで、そっちをうまく対応させてあげる必要のにもうちょっと研究が必要そうですかね。
あと、S2BlazeDSとかも同じような話。