[英]How to invoke different methods from parameters in Java?
假设我有一个类A的方法:
List<String> A(int start, int size);
List<String> B(int start, int size);
现在,我有另一个可能使用A或B的函数。但是在调用它们之前,我先做一些逻辑:
void C() {
// lots of logic here
invoke A or B
// lots of logic here
}
我想传递方法A或B作为C的参数,如:
void C(Function<> function) {
// lots of logic here
invoke function (A or B)
// lots of logic here
}
但是,我注意到Java中的Function类只能接受一个参数(方法A或B都有两个参数)。 这有解决方法吗? (我不想改变方法A或B签名)。
BiFunction
表示一个接受两个参数并产生结果的函数,因此您可能需要在此处查看 。
您可以通过lambda表达式使用和编写自己的功能接口。 我在这里说明,
interface MyInterface<T> {
List<T> f(int start, int size);
}
class Example {
List<String> A(int start, int size) {
return new ArrayList<String>();
}
List<Integer> B(int start, int size) {
return new ArrayList<Integer>();
}
void C(MyInterface function) {
}
public static void main(String[] args) {
Example e = new Example();
MyInterface<String> methodForA = (x,y) -> e.A(1,2);
MyInterface<Integer> methodForB = (x,y) -> e.B(1,2);
e.C(methodForA);
e.C(methodForB);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.