我可以通过数组调用方法吗?

时间:2014-09-20 01:19:22

标签: java arrays methods call

例如,我想创建一个具有调用方法指针的数组。 这就是我想说的:

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");
    }
}

如果我的描述性不够或格式错误,我很抱歉。感谢您的投入。

3 个答案:

答案 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();

(live example)

答案 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()找到它。