首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将函数列表转换为可以传递给varargs方法参数

将函数列表转换为可以传递给varargs方法参数
EN

Stack Overflow用户
提问于 2018-09-04 20:40:26
回答 2查看 90关注 0票数 1
代码语言:javascript
运行
复制
  public Email myMethod(Function<MyObject, String>... functions) { ...  }

我创建了一个函数列表,并希望传递给myMethod:

代码语言:javascript
运行
复制
     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
EN

回答 2

Stack Overflow用户

发布于 2018-09-04 20:42:53

它是一个函数的array,所以创建一个这样的函数数组并传递它。

或者您可以使用以下命令调用它:

代码语言:javascript
运行
复制
Function<MyObject, String>[] array = new Function[functions.size()];
functions.toArray(array);
myMethod(array);

只需注意,您不能创建泛型数组,但可以声明一个泛型数组。

票数 1
EN

Stack Overflow用户

发布于 2018-09-04 20:59:41

我相信一个更干净的代码应该是

代码语言:javascript
运行
复制
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建议我把它写成

代码语言:javascript
运行
复制
myMethod(functions.toArray(new Function[0]));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52166599

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档