1

我不明白为什么 Eclipse 给我一个关于将 BufferedReader 返回的字符串传递给 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
        }
    }
4

2 回答 2

4

看起来这不是 key 的问题,而是 value 部分的问题。您不能将new Node<E>其添加为值。它必须具有特定类型,例如new Node<String>()or new Node<Integer>()

于 2012-10-13T19:36:49.317 回答
1

\1。您没有调用节点的构造函数: hash.put(br.readLine(), new Node);

要调用默认构造函数,您必须使用类的名称调用“方法”,例如:

新字符串();/*或*/ new Node();

\2。泛型类型 <E> 在类的声明中的任何地方都看不到。要使用它,您必须执行以下操作:


    public class Model<E> {
       private Hashtable<String, Node<E>> hash=new Hashtable<String, Node<E>> ();

..所以要么一路走下去,要么完全删除它。

于 2012-10-13T19:48:25.717 回答