这有效:
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,在声明中使用泛型,它可以工作。发生了什么?
答案 0 :(得分:7)
这有效:
Hashtable<String,String> myHT;
myHT = new Hashtable<String, String>();
这样做:
Hashtable<String,String> myHT = new Hashtable<String, String>();
如果您使用Java7 +,您可以利用改进的类型推断功能,该功能允许在表达式的右侧省略type-parameter的显式设置:
Hashtable<String, String> myHT = new Hashtable<>();
通常,类型参数信息(<String, String>
)应紧跟在类型(Hashtable
)之后。这使得如下一个无效的片段
Hashtable myHT<String,String>;
myHT = new Hashtable<String, String>();
因为类型参数信息不在类型之后,而是在变量名之后。
答案 1 :(得分:3)
此:
Hashtable myHT<String,String> = new Hashtable<String,String>();
应该是:
Hashtable<String,String> myHT = new Hashtable<String,String>();
或者如果你想得到幻想:
Hashtable<String,String> myHT = new Hashtable<>();
答案 2 :(得分:2)
这一行怎么样:
Hashtable<String,String> myHT = new Hashtable<String,String>();