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

时间:2018-02-28 10:07:29

标签: java oop object methods

我想做这样的事情:

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可以创建适用于多种输入类型的方法。 (可能不是)但我只是想减少我必须写的行数。如果我为所有想要比较的方法编写这个东西,或者使用复制粘贴技术并改变一些小东西(这是不好的),我会写很多东西。

1 个答案:

答案 0 :(得分:3)

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

  

Predicate isLengthTen = string - &gt; string.length()== 10;

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

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

希望它有所帮助!

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