传递方法作为另一种方法的参数

问题描述 投票:1回答:1

我想做这样的事情:

public class Myclass() {
ArrayList<Object> objects;

public Myclass() {
    this.objects = new ArrayList<>();
}
public ArrayList<Object> callObjectAndMethod(Method method, String string) {
    ArrayList<Object> returnlist = new ArrayList<>();
    // call method for given object reference. I also assume that return value of the method is String
    String output = object.method();
    for (Object object : this.objects) {
       if (object.method.contains(string)) {
           returnlist.add(object.method());
       }
    return returnlist; 
    }

}

是否可以将方法作为参数传递给另一个方法?另外,我想对多种变量类型进行这种迭代。 int,String,double可以创建适用于多种输入类型的方法。 (可能不是)但我只是想减少我必须写的行数。如果我为所有想要比较的方法编写这个东西,或者使用复制粘贴技术并改变一些小东西(这是不好的),我会写很多东西。

java oop object methods
1个回答
3
投票

你可以使用java-8函数式编程。它允许使用Function Interfaces创建名为lambda expressions的实现。这些lambda表达式可以作为变量传递给其他方法。例如

谓词isLengthTen = string - > string.length()== 10;

现在,这可以作为参数传递给任何方法。因此,您可以轻松地使用java 8函数编程将代码作为参数传递。

boolean testTruth(Predicate<T> predicate,T dataUnderTest){
     predicate.test(dataUnderTest);
}

希望能帮助到你!

关于如何使用的快速阅读是here

© www.soinside.com 2019 - 2024. All rights reserved.