在Java语言中,有没有可能通过某种方法将函数赋给变量,就像在PHP或JavaScript中一样?
发布于 2012-11-23 00:58:11
在Java语言中,有Method和MethodHandles,它们可以通过反射调用方法,但语言还不支持这一点。
在Java 8中,您将能够使用对方法的引用。
发布于 2012-11-23 00:56:52
在今天的java中,不,你不能。
与您最近的是接口:您不存储函数,而是存储定义所需函数的接口的实现。
一个典型的例子是the Comparator interface的实现:
Comparator<ProductSearchResult> c = new Comparator<ProductSearchResult>() {
public int compare(ProductSearchResult result1, ProductSearchResult result2) {
return result1.product.getRsId().compareTo(result2.product.getRsId());
}
};
Collections.sort(groupResults, c); // I pass a function, wrapped in my Comparator implementation发布于 2012-11-23 01:03:40
最接近的是与接口结合的内部类。它们不仅可以携带一个函数(方法),而且可以携带许多函数(方法),如果愿意,可以将这些函数(方法)委托回主类方法。但这个解决方案可能很容易过于重量级:
class Main {
interface X {
void doX();
}
class Ref1 implements X {
void doX() { doA(); };
}
class Ref2 implements X {
void doX() { doB(); };
}
void doA() { };
void doB() { };
void demo() {
X x = new Ref1();
x.doX();
}
}https://stackoverflow.com/questions/13517153
复制相似问题