2

私はandroid.os.HandlerAndroidのメカニズムに本当に混乱しています。メッセージ処理intでメッセージのタイプをエンコードするのはなぜですか? この種の型に対して Enum を優先することを学んだEffective Java を読んだ後、intここでの進め方が非常に不安に感じます。

ビューからのさまざまなメッセージを処理するために、ハンドラーからサブクラス化するさまざまな状態クラスを定義して、状態パターンを使用したいと考えています。

public class ReadyState extends Handler {

     @Override
     public void handleMessage(Message msg, int what) {
          // ...      
     }
}

で状態をエンコードする必要がありますか? with フィールドをint使用しますか?Enum

enum Action {
    START(0), STOP(1), BACKFLIP(2);

    int code;
    public Action(int code) { this.code = code }
}

代替アプローチはありますか?

4

2 に答える 2

3

メッセージ処理で int を使用してメッセージのタイプをエンコードするのはなぜですか?

ライブラリの作成者はあなたの列挙型をそこに入れることができないため、パラメーターとして int を取ります。彼らはそれが何と呼ばれているかさえ知りません!

于 2013-01-18T01:17:42.407 に答える
1

what引数を列挙型にマップしたい場合は、それが方法です。

int であるということは、引数をビット セット、単純なコード、または実際のデータなどとして使用できることを意味します。

于 2013-01-18T01:17:58.553 に答える