我试图将一个类作为参数传递给方法,但不知道是否可能。
不是在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;
}
}
答案 0 :(得分:5)
您可能要做的是定义一个包含Sort
函数的sort()
接口:
interface Sort{
public int[] sort(int[] input);
}
然后让您的Insertion
班级实施您的Sort
界面及其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
接口,因此您可以将它们的实例传递到runTest()
函数。
Here是实现接口的Processing参考。
答案 1 :(得分:4)
创建名为interface
的{{1}},然后使用它创建多个排序实现。像这样:
SortingAlgorithm
现在使用算法:
interface SortingAlgorithm {
public int[] sort(int[]);
}
class BubbleSort implements SortingAlgorithm {
int[] sort(int[] input) {
// bubble sort code here
}
}
class InsertionSort implements SortingAlgorithm {
InsertionSort() {
}
int[] sort(int[] input) {
return insertionSort(input);
}
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;
}
}
答案 2 :(得分:4)
您可以使用接口。
public interface SortInterface{
void sortStuff(int[] input);
}
您可以拥有许多不同的排序类来实现此接口,例如
class Insertion implements SortInterface
class BubbleSort implements SortInterface
所有这些方法都实施了sortStuff(int[] input)
,您可以在
runTest(String[] text, int[] number, String url, SortInterface sortObject)
{
sortObject.sortStuff(number);
}