我不明白为什么Eclipse给我一个关于将BufferedReader返回的String传递给Hashtable的put(Object,Object)方法的错误。我已经阅读了API,我不认识任何线索。是否可能无法确定它是否会返回唯一的字符串?
字符串字典设置在文件的其他地方,我已将其删除到重要的位 - 问题和方法中的方法。任何与变量有关的事情。
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Hashtable;
public class Model {
private Hashtable hash=new Hashtable();
private String dictionary;
public void loadWords() throws IOException{
BufferedReader br=null;
try{
br=new BufferedReader(new FileReader(dictionary));
do{
hash.put(br.readLine(), new Node<E>);
}
while(br.readLine()!=null);
}catch(IOException iOE){
System.out.println("Fission mailed");
}
finally{
br.close(); // Closing the buffered reader
}
}
答案 0 :(得分:4)
看起来关键不是问题,价值部分是问题。
您无法将此new Node<E>
添加为值。它必须具有特定类型,例如new Node<String>()
或new Node<Integer>()
。
答案 1 :(得分:1)
\ 1。您没有调用节点的构造函数: hash.put(br.readLine(),new Node);
要调用默认构造函数,您必须使用类的名称调用“方法”,如:
new String(); / *或* / new Node();
\ 2。通用类型&lt; E&gt;在班级宣言中没有看到任何地方。要使用它,您必须执行以下操作:
public class Model<E> {
private Hashtable<String, Node<E>> hash=new Hashtable<String, Node<E>> ();
..所以要么一直走,要么完全删除它。