2012-04-17 26 views
1

以下單級工作正常,使用「this」與不在Java的單例類中使用它?

public class Elvis 
{ 
    private static Elvis elvis = new Elvis(); 

    private Elvis() 
    { 

    } 

    public static Elvis Instance() 
    { 
     return elvis; 
    } 
} 

但是,當我改變return elvis;return this.elvis,我得到non-static variable this cannot be referenced from a static context。爲什麼是這樣?

+3

沒有勺子。 – user1329572 2012-04-17 01:19:46

+3

'this'只存在於對象實例的上下文中,而不存在於靜態上下文中。 – 2012-04-17 01:19:50

+0

在靜態上下文中,您可以使用'Elvis.elvis'而不是'this.elvis'。 – 2012-04-17 01:21:46

回答

11

this引用當前對象實例。一個static方法不包含在一個對象中,它包含在該類中。

1

兩個關鍵詞「this」和「static」在某種意義上是對立的。當你引用當前對象的成員時,你使用「this」,那就是你有一個對象,並且你可能正在訪問一個非靜態成員。靜態成員,函數和屬性是所有對象的「全局變量」,它們不屬於任何特定的對象,而是屬於類本身。

歷史悠久。 「this」表示這個對象的當前實例。靜態成員不屬於任何實例。

相關問題