我正在尝试将一个类作为参数传递给一个方法,但不知道是否可行。
不是在 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/