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