2012-11-19 43 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.