在java中我可以将方法存储在变量中吗?

时间:2011-05-09 06:33:43

标签: java methods

  

可能重复:
  Java - Creating an array of methods

在java中,我可以将方法存储在变量中吗?例如,我可以有一系列方法吗?如果是这样,我该怎么做?

7 个答案:

答案 0 :(得分:5)

在Java 6及更低版本中,您需要使用反射(请参阅java.lang.reflect包)。 Java 7意味着在这方面有一些新功能(特别是method handlesJSR 292)和新的“调用动态”东西)。 Java 8(稍微离开,然后)看起来设置为lambda expressions(是的,该链接是一个OpenJDK页面,但是they say Oracle's on board),它们不是完全相同的东西,而是相关的

答案 1 :(得分:2)

我建议您将输出保存在变量中,而不是再次调用该函数。因为变量只要需要就会保存在内存中。之后,自动垃圾收集将负责将其从内存中释放出来。但是如果你把方法放在变量中,每次调用它时会占用内存的激活记录堆栈。因此,将输出存储在变量而不是方法中是一种很好的做法。

答案 2 :(得分:1)

是的,你能做到这一点。你有Method类。

答案 3 :(得分:1)

可以使用reflectionMethod数据类型。

答案 4 :(得分:1)

您可以使用反射来获取Method对象,然后可以在其上调用invoke(..)

答案 5 :(得分:1)

例如,看看是什么,返回Class#getDeclaredMethods()

答案 6 :(得分:1)

反射是一种方式。但是你可以使用一个界面。

interface I {
    int add (int a, int b);
}

说你有一个班级

class B implements I {
   int add(int a, int b){
        return a + b;
   }
}

现在您可以创建一个类似的函数:

doCalculate(I mehthodInterface) {
    \\some calculations
    \\u can also use any other functions defined in this interface
    methodInterface.add(2, 3);
}

在这里,您可以拥有实现这些方法的接口数组。