1

一般的なマップを変更しようとしていました

private final Map<String, Object> dataObject;

private final Map<String, ?> dataObject;

ゲッターはから変わります

public Map<String, Object> getDataObject() {
  return dataObject;
}

public Map<String, ?> getDataObject() {
  return dataObject;
}

しかしセッター:

public void addDataObject(final String key, final Object value) {
  dataObject.put(key, value);
}

エラーなしで構成することはできませんか?または、「?」を使用しようとして間違っていますか?ジェネリック

4

3 に答える 3

1

マップが実際に である場合は、Map<String,String>電話をかけることができますがaddDataObject("key", Integer.valueOf(1972))、それは悪いことです。だからdataObjectそのままでいい。を変更することもできますがgetDataObject、それはおそらく役に立たず、通常は嫌われるワイルドカードをクライアント コードで処理する必要があります。

于 2012-05-31T11:07:15.680 に答える
-1

すでに dataObject の前に final 修飾子を配置しています.. set メソッドを使用して final 変数の値をどのように変更できますか???? ( final の定義に反することはありません)。

このようにコードを変更できます-

private final Map<String, ? super Object> dataObject=null;
于 2012-05-31T11:27:49.200 に答える