4

.NET 2 と Java 5 および 6 を約 4 年間使用した後、MIDP 開発に戻ってきました。その間、列挙型の使用が非常に好きになりました。

Enum は、開発者がコードの一部をより信頼できるようにする言語機能です。特に、エラーを早期に (コンパイル中に) 回避または検出できるようにするためです。その他の利点については、http://java.sun.com/j2se/1.5.0/docs/guide/language/enums.html を参照してください。

MIDP 2.0 でそれらを見つけることができなかったのは奇妙だと思いました。次のエラー メッセージが表示されます。

「タイプ 'enum' は、ソース レベル 1.5 の予約済みキーワードであるため、識別子として使用しないでください」

しばらく前に Java 1.4 を使用した経験がありましたが、覚えていませんでした。高水準言語の新しいバージョンには、当然のことと思っている機能がいくつかあります...

いずれにせよ、これらを使用しない場合の推奨事項を次に示します (MIDP を開発している場合、または Java 5 より前のコードを扱っている場合): http://www.javacamp.org/designPattern/enum.html

要約します(詳細と適切な説明については、前のリンクをたどってください。元の作者に感謝します):

//The typesafe enum pattern
public class Suit {
    private final String name;

    public static final Suit CLUBS =new Suit("clubs");
    public static final Suit DIAMONDS =new Suit("diamonds");
    public static final Suit HEARTS =new Suit("hearts");
    public static final Suit SPADES =new Suit("spades");    

    private Suit(String name){
        this.name =name;
    }
    public String toString(){
        return name;
    }

}

この問題に対する他のアプローチはありますか?

4

1 に答える 1

3

MIDP の問題は、Java 言語レベル 1.2 (1.3 または 1.4 と言う人もいますが、それは重要ではありません) でスタックしていることと、Enum が 1.5 で導入されたことです。あなたのパターンは正しい方向への一歩ですが、各定数に序数を割り当てるなど、「実際の」列挙型の機能がいくつか欠けています。

1.5 で導入されたジェネリック、アノテーションなどで同様の問題が発生する可能性があります。Java 1.5 を 1.2 に変換するツールがあり、その一部をここにリストします。そのように、1.5 でコーディングして MIDP で実行できるはずです。ただし、これらのツールを使用すると、ビルドプロセスがかなり複雑になりますが、言及したソリューションはそうではありません。

于 2009-08-03T20:02:40.993 に答える