静态上下文消息中的另一个非静态引用

时间:2015-04-13 21:47:09

标签: java

在Java中使用SceneBuilder时,我必须使用ObjectOutputStream方法。

String FILENAME = "au_studentlist.txt";
    FileOutputStream outfile = new FileOutputStream(FILENAME, true);
    ObjectOutputStream outstream = new ObjectOutputStream(outfile);

    outstream.write("\n StudentID: " + txtStudentID.getText() + "\n First Name: " + txtFName.getText())

我收到了txt.getText()代码行的错误。错误是说我无法对非静态文本字段进行静态引用。

我不知道这意味着什么。

我甚至不知道我的ObjectOutputStream代码是否正确。

1 个答案:

答案 0 :(得分:0)

您收到错误消息,因为您正在访问的字段(txtStudentID和/或txtFName)属于某个类的实例,但这是静态方法。静态方法无法访问类实例的字段,因此您可能希望将其移动到实例方法中。我不能完全确定在没有看到更多代码的情况下建议什么。你想在哪里使用ObjectOutputStream

作为旁注,您需要使用outstream.writeUTF代替outstream.write

修改 这样的事情应该有效:

public void initialize()
{
    // ...
    btnSave.setOnAction(event -> {
        String FILENAME = "au_studentlist.txt";
        FileOutputStream outfile = new FileOutputStream(FILENAME, true);
        ObjectOutputStream outstream = new ObjectOutputStream(outfile);
        outstream.writeUTF("\n StudentID: " + txtStudentID.getText() + "\n First Name: " + txtFName.getText() + "\n Last Name: " + txtLName.getText() + "\n Major: " + cboMajor.getValue() + "\n State: " + cboState.getValue() + "\n Expected Graduation Date: " + dtExpGraduationDate.getValue().toString());
    });
}