Socket.getSoTimeout总是要求静态方法

时间:2017-05-20 15:42:07

标签: java sockets

我有以下代码

import java.net.Socket;
import javax.swing.JOptionPane;

public class SettingTimeout {

    public SettingTimeout() {
        Socket.getSoTimeout();

    }

    public static void main(String[] args) {
    }
}

问题是它不会编译,给出错误:

  

无法从类型Socket

中对非静态方法getSoTimeout()进行静态引用

但是,构造函数显然不是静态的。我做错了什么?

注意:我知道静态和非静态方法是什么。我只是不知道为什么这种非静态方法表现得好像它是静态的。

1 个答案:

答案 0 :(得分:0)

您必须先创建一个对象。 getSoTimeout方法特定于某个套接字开放,而不是全局值,因此,您需要先打开一个套接字,这意味着您的代码将如下所示:

import java.net.Socket;
import javax.swing.JOptionPane;

public class SettingTimeout {

    public SettingTimeout() {
        Socket s = new Socket();            
        s.getSoTimeout();

    }

    public static void main(String[] args) {
    }
}