我有以下代码
import java.net.Socket;
import javax.swing.JOptionPane;
public class SettingTimeout {
public SettingTimeout() {
Socket.getSoTimeout();
}
public static void main(String[] args) {
}
}
问题是它不会编译,给出错误:
无法从类型Socket
中对非静态方法getSoTimeout()进行静态引用
但是,构造函数显然不是静态的。我做错了什么?
注意:我知道静态和非静态方法是什么。我只是不知道为什么这种非静态方法表现得好像它是静态的。
答案 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) {
}
}