2016-01-12 64 views
-3

在一行上宣佈一個哈希表這個工作:也不會在Java

Hashtable myHT; 
myHT = new Hashtable<String, String>(); 

這種失敗:

Hashtable myHT<String,String> = new Hashtable<String,String>(); 

有了這個錯誤:

[javac] /home/me/code/SomeFile.java:10: error: ';' expected 
[javac]  Hashtable myHT<String,String> = new Hashtable<String,String>(); 

這種失敗:

Hashtable myHT<String,String>; 
myHT = new Hashtable<String,String>(); 

與錯誤:

[javac] /home/me/code/SomeFile.java:10: error: ';' expected 
[javac]  Hashtable myHT<String,String>; 

此外,行爲是不洽。該文件中還有其他HashTables在一行中聲明和實例化,在聲明中使用泛型,並且工作正常。發生了什麼?

+1

Hashtable myHT = new Hashtable ()完美無缺。 – solar

+0

@Dave:在一個便條上,有東西要喝哥們? – Bhoot

+0

@Boot:我沒有花太多時間用Java,這是一個誠實的錯誤。我不知道人們爲什麼低調回答問題並投票結束這個問題。 – Dave

回答

7

這工作:

Hashtable<String,String> myHT; 
myHT = new Hashtable<String, String>(); 

等做到這一點:

Hashtable<String,String> myHT = new Hashtable<String, String>(); 

如果你在Java7 +,你可以利用改進的類型推斷的功能,它能夠省略右側類型參數的顯式設置的表達的手側:

Hashtable<String, String> myHT = new Hashtable<>(); 

一般而言,類型參數信息(<String, String>)應的類型(Hashtable)之後立即。這使得片段類似下面的一個無效

Hashtable myHT<String,String>; 
myHT = new Hashtable<String, String>(); 

因爲類型參數信息不是類型之後,但在變量名之後。

3

此: Hashtable myHT<String,String> = new Hashtable<String,String>();

應該是: Hashtable<String,String> myHT = new Hashtable<String,String>();

或者,如果你想獲得幻想: Hashtable<String,String> myHT = new Hashtable<>();

+0

看中的是鑽石界面,它將定義的數據輸入鏈接到施工調用(只有我加入了這個作爲更多解釋) –

2

這個怎麼行:

Hashtable<String,String> myHT = new Hashtable<String,String>();