首页 > 解决方案 > 从静态方法返回一个类对象

问题描述

我正在使用静态关键字。我已经声明了一个返回类型是类的静态方法。当我从 main 方法访问此方法时,出现以下错误。如何从此方法返回对象?

error: non-static variable this cannot be referenced from a static context
            return this;

以下是我的代码

public class StaticKeyword{

   public static StaticKeyword run(){
     return this;
   }

   public static void main(String args[]){
     System.out.println(StaticKeyword.run());
   }    
}

标签: java

解决方案


静态方法或静态变量属于一个类而不是该类的实例。this是一个指向当前引用的实例变量。

因此this不能在静态块中使用。所以,你应该像这样改写你的代码,

public static class StaticKeyword {

    public static StaticKeyword run(){
        return new StaticKeyword();
    }

    public static void main(String args[]){
        System.out.println(StaticKeyword.run());
    }    
}

还要记住,声明为静态的方法将永远保留在主内存中(即,直到 java 进程停止)。除非并且直到您会非常频繁地使用此方法,否则util可以将类和方法之类的东西设置为静态

  1. 对于每次访问而不创建对象
  2. 为了更快地访问 - 因为它是静态的,所以在连续的方法调用期间,该方法已经存在于主内存中。

当您不经常使用该方法时,最好通过创建相应类的实例来访问该方法。


推荐阅读