java - 从静态方法返回一个类对象
问题描述
我正在使用静态关键字。我已经声明了一个返回类型是类的静态方法。当我从 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());
}
}
解决方案
静态方法或静态变量属于一个类而不是该类的实例。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
可以将类和方法之类的东西设置为静态
- 对于每次访问而不创建对象
- 为了更快地访问 - 因为它是静态的,所以在连续的方法调用期间,该方法已经存在于主内存中。
当您不经常使用该方法时,最好通过创建相应类的实例来访问该方法。
推荐阅读
- r - 如何更改 csv 文件中内容的类别?
- java - 运行颤振医生 --android-licenses 时出现错误。错误:找不到或加载主类 Rout\AppData\Local\Android\Sdk\cmdline-tools\l
- java - 根据内容(行数)重置 JTable
- excel - .Net Core Regex Replace 返回的结果与 localhost 不同
- python - 满足条件时重新格式化数据框/添加行
- firebase - 量角器不喜欢angularfire
- r - 在 R 中,如何指定一组变量以在不同模型中重用?
- docker - 升级 Quarkus 1.11->1.13 的 Dockerfile
- javascript - 需要根据按钮单击的持续时间增加值
- c - 如何在脚本外壳中调用可执行 C?