java - 在 BiFunction 中存储另一个类的静态函数时出错
问题描述
我有两个类,在其中一个类中,我想创建一个变量来保存另一个类的函数。我想这样做,这样我就可以有条件地改变行为。
我尝试了以下导致编译错误的原型:
class A {
public String myFn(int a, int b) {
return "<" + a + " " + b + ">";
}
public String myFn2(int a, int b) {
return "(" + a + " " + b + ")";
}
}
class B {
static int mode = 1;
public void fn() {
BiFunction<Integer, Integer, String> fn = null;
if(mode == 1) {
fn = ClassA.myFn(); // This results in an error "Cannot resolve method fn()".
}
else {
//fn = ClassA.myFn2();
}
// next I will use fn ...
}
}
这会导致错误“无法解析方法 fn()”。
如何存储该功能?
谢谢。
解决方案
调用ClassA.myFn()
需要方法是静态的,这是一个方法调用,你不想存储方法,而不是调用它。
拉姆达
BiFunction<Integer, Integer, String> fn = null; if(mode == 1) { fn = (a, b) -> ClassA.myFn(a, b); }
方法参考
BiFunction<Integer, Integer, String> fn = null; if(mode == 1) { fn = ClassA::myFn; }
⚠️还有
两者都
myFn
应该myFn2
是静态的public static String myFn(int a, int b) { return "<" + a + " " + b + ">"; }
选择
ClassA
或A
但它们应该匹配class ClassA {
推荐阅读
- javascript - 如何在 React Typescript 中的异步提交函数调用后清除输入并关闭模式
- flutter - 添加新值时不会触发来自 StreamBuilder 的侦听器
- java - Spring boot AWS SqsListener 同步操作
- elasticsearch - ElasticSearch 上层次结构的索引策略
- python - (Django) 编辑不是 ModelForm 的表单数据
- php - 公共属性的 json_encode() 行为
- reactjs - 根据 select option 中的选定项在 antd 表中显示数据
- javascript - 如何获取具有当前位置拼写的时区名称?
- r - ocr : 解开在行尾剪切的单词并保留段落
- python - 使用包含标签的 CSV 文件绘制图表