4

正しく動作するJavaプログラムがあります。

しかし、Netbeansでクリーンアップしてビルドしようとすると、次のように窒息します。

 protected HashMap<String, ArrayList<HashMap<String,String>>> config1

 config1 = new <String,ArrayList<HashMap<String,String>>> HashMap(); // build breaks here.

エラーは次のとおりです。

  cannot find symbol  
  symbol  : constructor     
  <java.lang.String,java.util.ArrayList<java.util.HashMap<java.lang.String,java.lang.String>>
  >HashMap()
4

4 に答える 4

5

タイプパラメータを間違った場所に配置しています。それはとの間HashMapにあります():-

config1 = new HashMap<String,ArrayList<HashMap<String,String>>>();

また、宣言には特定の型ではなく、より一般化された型を含めることをお勧めしますgeneric type parameters。したがって、宣言の代わりに、およびあなたの:-のMap代わりに使用する必要がありますHashMapListArrayListtype parameter

実際には、宣言と初期化を2行で分割する必要はありません。それらを1行にまとめるだけです。それはよりきれいに見えます。したがって、2行を次のように変更できます。-

protected Map<String, List<Map<String,String>>> config1 = 
                               new HashMap<String, List<Map<String,String>>>();
于 2012-11-19T06:04:23.440 に答える
4

ジェネリックの前にクラス名を付ける必要があります。

config1 = new HashMap<String,ArrayList<HashMap<String,String>>>();
于 2012-11-19T06:04:22.507 に答える
2

ジェネリックはクラス名の後に続く必要があります。クラス名の前に使用しないでください。2行目を次のように修正します。

      protected HashMap<String, ArrayList<HashMap<String,String>>> config1;

      config1 = new HashMap <String,ArrayList<HashMap<String,String>>>();
于 2012-11-19T06:04:57.823 に答える
1

あなたはこれを試すことができます:

config1 = new  HashMap<String, ArrayList<HashMap<String, String>>>(); // build breaks here.
于 2012-11-19T06:07:54.473 に答える