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

实际上,您不需要将声明和初始化分成两行。只需将它们放在一行中即可。它看起来更干净。因此,您可以将两行更改为: -

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

泛型应遵循类名。它不应该在类名之前使用。更正您的第二行,如下所示:

      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 回答