在java中,我可以将方法存储在变量中吗?例如,我可以有一系列方法吗?如果是这样,我该怎么做?
答案 0 :(得分:5)
在Java 6及更低版本中,您需要使用反射(请参阅java.lang.reflect
包)。 Java 7意味着在这方面有一些新功能(特别是method handles(JSR 292)和新的“调用动态”东西)。 Java 8(稍微离开,然后)看起来设置为lambda expressions(是的,该链接是一个OpenJDK页面,但是they say Oracle's on board),它们不是完全相同的东西,而是相关的
答案 1 :(得分:2)
我建议您将输出保存在变量中,而不是再次调用该函数。因为变量只要需要就会保存在内存中。之后,自动垃圾收集将负责将其从内存中释放出来。但是如果你把方法放在变量中,每次调用它时会占用内存的激活记录堆栈。因此,将输出存储在变量而不是方法中是一种很好的做法。
答案 2 :(得分:1)
Method
类。
答案 3 :(得分:1)
可以使用reflection和Method
数据类型。
答案 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);
}
在这里,您可以拥有实现这些方法的接口数组。