可以在 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 次浏览

开启你的职业生涯

通过完成本课程获得认证

开始
广告