可以在 Java 中的靜態上下文中使用這個關鍵字嗎?


靜態方法或塊屬於該類,這些方法或塊將隨該類一起載入到記憶體中。你可以在不建立物件的情況下呼叫靜態方法。(使用類名作為引用)。

而 Java 中的 “this”用作對當前物件的引用。但靜態上下文(方法和塊)沒有任何例項屬於該類。

簡單來說,要使用 this 方法應由物件呼叫,而對於靜態方法而言則並非總是必需的。

因此,你不能在靜態方法中使用此關鍵字。

示例

在以下 Java 程式中,類 ThisExample 包含一個私有變數 name,其中包含 setter 和 getter 方法以及一個例項方法 display()。在主方法(為靜態)中,我們嘗試使用 “this” 呼叫 display() 方法。

 即時演示

public class ThisExample {
   private String name;
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public void display() {
      System.out.println("name: "+this.getName());
   }
   public static void main(String args[]) {
      this.display();
   }
}

編譯此程式時,它會給你一個錯誤,如下所示 -

編譯時錯誤

ThisExample.java:17: error: non-static variable this cannot be referenced from a static context
      this.display();
      ^
1 error

更新於: 30-Jul-2019

996 次瀏覽

開啟你的職業生涯

透過完成本課程獲得認證

開始
廣告