2017-05-20 54 views
-1

我有以下代碼Socket.getSoTimeout總是要靜態方法

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

public class SettingTimeout { 

    public SettingTimeout() { 
     Socket.getSoTimeout(); 

    } 

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

的問題是,它不會編譯,給人的錯誤:

Cannot make a static reference to the non-static method getSoTimeout() from the type Socket

然而,構造顯然是不靜態的。我究竟做錯了什麼?

注:我知道什麼是靜態和非靜態方法。我只是不知道爲什麼這個非靜態方法表現得像靜態一樣。

+2

'getSoTimeout()操作'上一個物體,而不是一個班級! –

+0

@Am_I_Helpful對不起,我不明白這是什麼意思。我將如何實現它? –

+1

@FinderBear這是關於OO編程的**基礎**,什麼是對象,什麼是類,什麼是'靜態'和'非靜態'方法之間的區別..等等。 – Yahya

回答

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) { 
    } 
}