如何从文件读取用户定义的对象?

时间:2019-11-27 17:01:28

标签: java arrays oop object bufferedreader

我正在使用BufferedReader从文件中读取Word对象,但事实证明BufferedReader的设计使其只能读取字符串,而不能读取用户定义的对象。

在这种情况下,Word对象是一个字符串,只是没有定义为字符串

换句话说,如何将str2 [i]从字符串转换为Word对象以使其入队?

这是因为enqueue方法接收Word对象。

    public static void main(String[] args) {

    WordPriorityQueue x = new WordPriorityQueue();
    File file = new File("file goes here");
    BufferedReader br = new BufferedReader(new FileReader(file));

    String st;
    while((st = br.readLine()) != null) {
            String str1 = br.readLine();
            String str2[] = str1.split(" ", 500);
            int i = 0;
            while(str2[i] != null) {
                //How can I convert the string str2[i] to a Word object?
                x.enqueue(str2[i]);  //Doesn't work for Strings
                i++;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

我不认为您正在使用javax.speech.Word对象。我认为Word是您的课程。

要创建新对象,Java提供了构造函数。

  

国防部

     

Java中的构造函数是用于初始化的特殊方法   对象。当一个类的对象是   已创建。

因此,在您的代码中,必须使用每个项目的构造函数创建一个Word对象。

public static void main(String[] args) throws IOException {

    //List that contains all words
    List<Word> wordsList = new ArrayList<>();

    //Create the scanner
    File file = new File("file goes here");
    Scanner sc = new Scanner(file);    

    while( sc.hasNextLine() ) {
        String[] lineSplitted = sc.nextLine().split(" "); //add 500 as limit

        for (i=0; i<lineSplitted.length; i++) {
            //Call constructor
            wordsList.add(new Word(lineSplitted[i])                
        }
    }

    sc.close()
 }

在您的Word类中,添加一个构造函数,该构造函数作为参数需要一个字符串。

public class Word {

  private String word;

  public Word(String word) {
    this.word = word;
  }

  //Other methods, getter, setter, etc...
}

最后,您将有java.util.List个对象中的Word个对象。