在 Java 中,函数不是一流的概念(但在 Java 8 中出现)。因此,不可能像在许多其他具有函数概念的语言中那样传递方法。
相反,您需要做的是声明一个接口并使用匿名内部类实现它。例如
界面
interface MyGetter {
Object doGet();
}
检查方法
boolean checkValue(MyGetter getter, Object value) {
return getter.doGet().equals(value);
}
召唤
checkValue(new MyGetter() {
public Object doGet() {
return obj.getLevelOne().getLevelTwo().getValue();
}
}, 5);
我们在调用中实际做的是创建一个新类和该类型的对象来进行您需要的实际调用。
编辑:
如果您需要不同的返回类型,您可以使接口和检查方法通用,例如
界面
interface MyGetter<T> {
T doGet();
}
检查方法
<T> boolean checkValue(MyGetter<? extends T> getter, T value) {
return getter.doGet().equals(value);
}
召唤
checkValue(new MyGetter<SomeClass>() {
public SomeClass doGet() {
return obj.getLevelOne().getLevelTwo().getValue();
}
}, 5);