3

Eclipse Junoを使用してコードを記述しており、ハッシュテーブルを使用して、そのエントリに応じてdataImportObjectを設定しています。誰かがこれについて何が悪いのか教えてもらえますか: ペアが含まれてhtいる私のhashTableです<String, Integer>

(ht.containsKey("DEVICE_ADDRESS")) ? 
    dataImportObject.setDevice_Address(dataitems[ht.get("DEVICE_ADDRESS")]) : 
    dataImportObject.setDevice_Address("");
4

2 に答える 2

16

誰かがこれについて何が悪いのか教えてもらえますか

2つのこと:

  • 条件演算子は、それ自体ではステートメントとして使用できず、式としてのみ使用できます。
  • これらのメソッドにはvoidの戻り型があると想定してsetいるため、条件演算子のオペランドとして表示することはできません。

3つのオプション:

  1. ifステートメントを使用します。

    if (ht.containsKey("DEVICE_ADDRESS")) {
         dataImportObject.setDevice_Address(dataitems[ht.get("DEVICE_ADDRESS")]));
    } else {
         dataImportObject.setDevice_Address("");
    }
    
  2. 事前に、呼び出しで条件演算子を使用するsetDevice_Addressか、さらに明確にします。

    String address = ht.containsKey("DEVICE_ADDRESS") 
        ? dataitems[ht.get("DEVICE_ADDRESS")] : "";
    dataImportObject.setDevice_Address(address);
    
  3. ハッシュテーブルにnull値がないことがわかっている場合は、二重ルックアップを回避できます。

    Integer index = ht.get("DEVICE_ADDRESS");
    String address = index == null ? "" : dataitems[index];
    dataImportObject.setDevice_Address(address);
    
于 2013-03-12T17:19:04.450 に答える
0

三元条件の戻りタイプを無効に設定することはできません。

そのために他の場合に使用します。

重複の可能性

于 2013-03-12T17:20:04.853 に答える