2012-11-19 40 views
4

我有一个java程序,它运行正常。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

你导入相应的类? –

+0

引用的源代码可能永远不会编译,因此正在运行的版本必须来自不同版本的源代码。它是否受版本控制? –

回答

5

你正在把你的类型参数放在错误的地方。它有HashMap之间和(): -

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

此外,它的一个好主意,有更普遍的类型,而不是特定类型的声明,甚至generic type parameters。所以,你应该在你的type parameter使用Map,而不是在声明HashMapList代替ArrayList: -

而实际上,你并不需要打破你的声明和初始化的两行。只需将它们放在一个单一的行中。它看起来更清洁。因此,您可以将您的两条线路更改为: -

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

你有仿制药之前把类名。

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

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

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

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

你可以试试这个:

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