我正在使用静态关键字。我已经声明了一个静态方法,其返回类型是class。当我从主要方法访问此方法时,出现以下错误。我如何从该方法返回对象。
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());
}
}
答案 0 :(得分:4)
静态方法或静态变量属于一个类,而不是该类的实例。 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 :(得分:0)
您需要将其更改为此:
public static class StaticKeyword {
public static StaticKeyword run(){
StaticKeyword returnObject = new StaticKeyword();
return returnObject;
}
public static void main(String args[]){
System.out.println(StaticKeyword.run());
}
}
答案 2 :(得分:0)
this
是对当前对象的引用-当前对象的方法或构造函数正在被调用。但是,不会创建任何实例来返回。因此,您需要执行类似return new StaticKeyword()
还提示:当我学习关键字static
时,我个人很挣扎。有一个很好的经验法则:问自己“即使不存在此Obj的实例,我也要调用此方法吗?”如果是这样,则您的方法应为static
。