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