![](/img/trans.png)
[英]How can I resolve “Cannot make a static reference to the non-static field or method”?
[英]How do i make a static reference to a non-static method?
import java.util.Iterator;
import java.util.ArrayList;
import java.util.Arrays;
class Main {
public static void main(String[] args) {
ArrayList<String> original = new ArrayList<>(Arrays.asList("afd", "asdf", "aavdd", "sajf", "adnf", "afd", "fjfn"));
String find = "afd";
String replaceWith = "asd";
System.out.println(replaceIt(original, find, replaceWith));
}
public ArrayList<String> replaceIt(ArrayList<String> original, String find, String replaceWith){
ArrayList<String> newList = new ArrayList<String>();
for(int y = 0; y<original.size(); i++){
if(!original.get(y).equals(find))
newList.set(y, original.get(y));
newList.set(y, replaceWith);
}
original = newList;
return original;
}
}
我如何调用 replaceIt 方法? 我很困惑,我需要让它打印该函数的输出。 我很困惑有人请帮助。
public ArrayList<String> replaceIt()
是一个实例方法,它只能从Main
实例/对象中调用。public static void main
是类Main
静态方法,静态方法不能直接访问实例方法和实例变量。 因此,要从静态 main 方法调用replaceIt()
方法, replaceIt()
静态。
public static ArrayList<String> replaceIt(/*arguments*/){
//your code goes here
}
在Main
中使用非静态方法有点奇怪。 这不像您要构造 Main 的新实例(例如,构造Person
类的新实例的方式相同)。
这些类型的通用 helpers/utils 函数通常进入某种Utils.java
或Helpers.java
类,并在这些文件中声明为静态。 这样你就可以调用: Utils.replaceIt(original, find, replaceWith));
因为 replaceIt() 是一个实例方法,你只需要创建一个 Main 类的实例来调用它——
public static void main(String[] args) {
...
Main m = new Main();
System.out.println(m.replaceIt(original, find, replaceWith));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.