例如,我想创建一个具有调用方法指针的数组。 这就是我想说的:
import java.util.Scanner;
public class BlankSlate {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
System.out.println("Enter a number.");
int k = kb.nextInt();
Array[] = //Each section will call a method };
Array[1] = number();
if (k==1){
Array[1]; //calls the method
}
}
private static void number(){
System.out.println("You have called this method through an array");
}
}
如果我的描述性不够或格式错误,我很抱歉。感谢您的投入。
答案 0 :(得分:1)
@ikh回答说,您的array
应该是Runnable[]
。
Runnable
是定义run()
方法的接口。
然后您可以初始化您的数组,后者调用方法如下:
Runnable[] array = new Runnable[ARRAY_SIZE];
// as "array[1] = number();" in your "pseudo" code
// initialize array item
array[1] = new Runnable() { public void run() { number(); } };
// as "array[1];" in your "pseudo" code
// run the method
array[1].run();
从Java 8开始,您可以使用lamda表达式编写更简单的功能接口实现。所以你的数组可以用:
初始化// initialize array item
array[1] = () -> number();
然后,您仍然会使用array[1].run();
来运行该方法。
答案 1 :(得分:0)
您可以制作Runnable
数组。在java中,使用Runnable
代替函数指针[C]或委托[C#](据我所知)
Runnable[] arr = new Runnable[] {
new Runnable() { public void run() { number(); } }
};
arr[0].run();
答案 2 :(得分:0)
您也可以创建一个方法数组并调用每个方法,这可能更接近您在问题中请求的方法。这是代码:
public static void main(String [] args) {
try {
// find the method
Method number = TestMethodCall.class.getMethod("number", (Class<?>[])null);
// initialize the array, presumably with more than one entry
Method [] methods = {number};
// call method through array
for (Method m: methods) {
// parameter is null since method is static
m.invoke(null);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void number(){
System.out.println("You have called this method through an array");
}
唯一需要注意的是 number()必须公开,以便 getMethod()找到它。