我试图将一个类作为参数传递给方法,但不知道是否可能.
而不是调用的Insertion class在所述void runTest(String[] text, int[] number, String url)方法中,可以我通过它作为一个参数,这样我可以添加其他的排序算法.
这是我到目前为止:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
你可能想要做的是定义一个Sort包含一个sort()函数的接口:
interface Sort{
public int[] sort(int[] input);
}
Run Code Online (Sandbox Code Playgroud)
然后让你的Insertion类实现你的Sort接口及其sort()功能:
class Insertion implements Sort{
Insertion() {
}
int[] sort(int[] input) {
//...
}
}
Run Code Online (Sandbox Code Playgroud)
对任何其他排序类执行相同操作,然后将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);
}
}
Run Code Online (Sandbox Code Playgroud)
由于您的Insertion类(以及您创建的任何其他排序类)实现了Sort接口,因此您可以将它们的实例传递给您的runTest()函数.
以下是实现接口的Processing参考.