繁体   English   中英

如何从Java中的参数调用不同的方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM