Java程序运行正常但不编译

时间:2012-11-19 06:02:07

标签: java collections compiler-errors hashmap

我有一个正常运行的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 个答案:

答案 0 :(得分:5)

您将类型参数放在错误的位置。它介于HashMap()之间: -

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

此外,最好在声明中使用更多通用类型而不是特定类型,甚至在generic type parameters中也是如此。因此,您应在声明中使用Map代替HashMap,并在List中使用ArrayList代替type parameter: -

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

protected Map<String, List<Map<String,String>>> config1 = 
                               new HashMap<String, List<Map<String,String>>>();

答案 1 :(得分:4)

您必须将类名放在泛型之前。

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

答案 2 :(得分:2)

泛型应该遵循类名。不应该在类名之前使用它。纠正你的第二行如下:

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

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

答案 3 :(得分:1)

你可以试试这个:

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