varargs作为java 8中函数的输入参数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了varargs作为java 8中函数的输入参数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1337字,纯文字阅读大概需要2分钟。
内容图文
在Java 8中,如何定义函数以适合varargs.
我们有这样的功能:
private String doSomethingWithArray(String... a){
//// do something
return "";
}
由于某种原因,我需要使用Java 8函数调用它(因为’andThen’可以与其他函数一起使用.)
因此我想定义下面给出的东西.
Function<String... , String> doWork = a-> doSomethingWithArray(a) ;
这给了我编译错误.以下工作,但输入现在必须是一个数组,不能是一个单独的字符串.
Function<String[] , String> doWork = a-> doSomethingWithArray(a) ;
这里我提到了String,但它可以是任何Object的数组.
有没有办法使用varargs(…)而不是array([])作为输入参数?
或者,如果我创建一个类似于Function的新界面,是否可以创建类似下面的内容?
@FunctionalInterface
interface MyFunction<T... , R> {
//..
}
解决方法:
在这种情况下,您不能使用varargs语法,因为它不是方法参数.
根据您使用的函数类型,您可能根本不需要它,您可以按原样使用您的方法,而无需通过功能接口引用它们.
作为替代方案,您可以定义自己的功能界面,如下所示:
@FunctionalInterface
public interface MyFunctionalInterface<T, R> {
R apply(T... args);
}
然后你的声明变成:
MyFunctionalInterface<String, String> doWork = a -> doSomethingWithArray(a);
并且调用doWork现在可以是:
String one = doWork.apply("one");
String two = doWork.apply("one","two");
String three = doWork.apply("one","two","three");
...
...
note – 功能接口名称只是一个占位符,可以改进以与功能接口的Java命名约定保持一致,例如VarArgFunction或类似的东西.
内容总结
以上是互联网集市为您收集整理的varargs作为java 8中函数的输入参数全部内容,希望文章能够帮你解决varargs作为java 8中函数的输入参数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。