【问题标题】:"non-static variable this cannot be referenced from a static context" error [duplicate]“非静态变量不能从静态上下文中引用”错误[重复]
【发布时间】:2024-01-03 22:05:01
【问题描述】:

感谢您抽出宝贵时间帮助我。

我对“非静态...”错误有疑问,我不知道为什么。这是代码

public class Klient {
    public static String output = "test";
    public static void main(String[] args) throws Exception {
        Socket socket = new Socket("localhost", 9898);
        PrintStream PS = new PrintStream(socket.getOutputStream());

        InputStreamReader IR = new InputStreamReader(socket.getInputStream());
        BufferedReader BR = new BufferedReader(IR);

        int i;
        for (i = 0; i < 3; i++) {
            output = BR.readLine();
            Server2.setTekst(output);
        }

(这只是代码的一部分。我知道这是在解释时结束)

还有其他类:

public class Server2 extends JFrame implements Runnable {
    konsol = new JTextPane();
    konsol.setEditable(false);

    public void setTekst(String tekst) {
        konsol.setText(tekst);
    }

    public void run() {
        instance = new Server2();
        instance.setVisible(true);
    }
}

同样,这也只是代码的一部分。非常感谢您的帮助:)

【问题讨论】:

    标签: java compiler-errors non-static


    【解决方案1】:

    将此方法设为静态

    public static void setTekst(String tekst){
        konsol.setText(tekst);
    }
    

    【讨论】:

    • 这是正确的@SpringLearner 我认为 OP 应该做很多改变我希望你能把你的帖子变成一个社区维基以便我们可以解释更多
    • @SpringLearner 我已经尝试过了,并且遇到了完全相同的错误。这次是下面的代码给出了错误。 konsol.setText(tekst);
    • @Bassusour 显示您遇到错误的行号
    • @SpringLearner 我用我得到错误的位置编辑了上面的评论,但我也会在新评论中这样做。我在 konsol.setText(tekst);
    • @Bassusour 可能是 konsol 是非静态的
    最近更新 更多