public Email myMethod(Function<MyObject, String>... functions) { ... }
我创建了一个函数列表,我想传递给myMethod:
List<Function<MyObject, String>> functions= new ArrayList<>();
if (condition1) {
functions.add(myObject->myObject.getStringX());
} else {
functions.add(myObject->myObject.getStringY());
}
myMethod(functions);//Does not compile, I must find a solution here
to convert my list of functions to an array that can be accepted as
myMethod argument
答案 0 :(得分:1)
这是array
个函数,因此请创建一个此类函数的数组并将其传递。
或者您可以通过以下方式调用它:
Function<MyObject, String>[] array = new Function[functions.size()];
functions.toArray(array);
myMethod(array);
请注意,您不能创建一个通用数组,但可以这样声明一个。
答案 1 :(得分:1)
我认为应该是更干净的代码
Function [] functionsArray = new Function[functions.size()];
for (int i=0;i< functions.size();i++) {
functionsArray[i] = functions.get(i);
}
myMethod(functionsArray); // unchecked assignment here ofcourse
然后我的IDE建议我写为
myMethod(functions.toArray(new Function[0]));