繁体   English   中英

如何对非静态方法进行静态引用?

[英]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.javaHelpers.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM