0

インテントは、エクストラと呼ばれるキーと値のペアによって、あるアクティビティから別のアクティビティにデータを運びます。

public static final String mykey= "something";を使用してキーをインテントに渡す前に、キーを初期化します (つまり、定数として宣言し、何かを割り当てます)。intent.putExtra(mykey, myvalue);

私の質問は、宣言されているときにキーに値を割り当てる必要があるのはなぜですか? その値の用途は何ですか? = "something"での「 」の用途は何ですかpublic static final String mykey= "something";

私は関連する質問を投稿しましたが、尊敬されている人 (彼らの貴重な回答のために尊敬されています) は、最終が宣言されたときに定数が何であるかがわかるように値を割り当てる必要があると言いました。常識のように聞こえます。

しかし、単純に定数 public static final String a; を宣言するとします。コンパイラはまったく文句を言いません。つまり、使用する前に初期化されている限り、最終的な変数を値で初期化する必要はありません。

関連する回答をいただければ幸いです。前もって感謝します。

4

1 に答える 1

1

Intentは によって支えられていると仮定していMapます。

キーとして初期化されていない変数がある場合、これは値が本質的に失われていることを意味します。キーが関連付けられていないため、値を取得する方法はありません (ただし、nullキーを挿入することはまったく不可能である可能性があります)。地図)。

このキーを実際に変数に割り当てる必要はありません。問題なくintent.putExtra("somekey", somevalue);機能します。

誤って間違ったキーを使用しないようにするだけです。

final 変数を使用することが有益である理由の例として:

public static void main(String[] args) {
    Map<String, Integer> someMap = new HashMap<>();
    String theValue = "X";
    someMap.put(theValue, 5);
    System.out.println("Variable: " + theValue);
    System.out.println("Map: " + someMap.get(theValue));
    
    theValue = "Y";
    System.out.println("Variable: " + theValue);
    System.out.println("Map: " + someMap.get(theValue));
    System.out.println("ByValue: " + someMap.get("X"));
}

出力:

変数:X
マップ:5

変数: Y
マップ: null
ByValue: 5

最終的な場合theValue、再割り当てすることはできず、基になる から値を取得する際に問題は発生しませんMap

于 2013-11-03T14:23:01.513 に答える