java - 如何将类作为函数参数传递

标签 java processing

我正在尝试将一个类作为参数传递给一个方法,但不知道是否可行。

不是在 void runTest(String[] text, int[] number, String url) 方法中调用 Insertion class,我可以将它作为参数传递吗我可以添加其他排序算法。

这是我目前所拥有的:

Insertion insertion;

void setup() {
  String url = sketchPath("numbers/512/");
  insertion = new Insertion();
  String[] stringData = null;
  int[] intData = null;
  runTest(stringData, intData, url);
}


void runTest(String[] text, int[] number, String url) {

  File directory = new File(url);
  File[] listOfFiles = directory.listFiles();
  for (File file : listOfFiles) {
    //println(file.getName());
    text = loadStrings(file);
    number = int(text);

    insertion.insertionSort(number);

  }
}



class Insertion {

  Insertion() {
  }

  int[] insertionSort(int[] input) {

    int temp;

    for (int i = 1; i < input.length; i++) {
      for (int j = i; j > 0; j--) {
        if (input[j] < input[j-1]) {
          temp = input[j];
          input[j] = input[j-1];
          input[j-1] = temp;
        }
      }
    }
    println(input);
    return input;
  }
}

最佳答案

您可能想要做的是定义一个包含 sort() 函数的 Sort 接口(interface):

interface Sort{
   public int[] sort(int[] input);
}

然后让您的 Insertion 类实现您的 Sort 接口(interface)及其 sort() 函数:

class Insertion implements Sort{

  Insertion() {
  }

  int[] sort(int[] input) {
      //...
  }
}

对任何其他排序类执行相同的操作,然后将 Sort 变量传递到您的 runTest 函数中:

void runTest(String[] text, int[] number, String url, Sort sortFunction) {

  File directory = new File(url);
  File[] listOfFiles = directory.listFiles();
  for (File file : listOfFiles) {
    //println(file.getName());
    text = loadStrings(file);
    number = int(text);

    sortFunction.sort(number);
  }
}

由于您的 Insertion 类(以及您创建的任何其他排序类)实现了 Sort 接口(interface),您可以将它们的实例传递到您的 runTest () 函数。

Here是实现接口(interface)的处理引用。

关于java - 如何将类作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33238478/

相关文章:

java - 如何将android aar库与其他aar依赖项上传到maven Central?

java - 计算函数的运行时间

java - 使用正则表达式解析地址

java - 这是糟糕的耦合吗?

javascript - 从 Javascript 代码中删除鼠标控件

android - 在处理 Android 草图时加载本地镜像

java - FFT频率分析似乎得到了错误的值

java - 在 OSX 窗口对话框中排除文件

java - 显示数组排序

java - 在处理中制作随机矩形