Java 在功能接口中使用通用输入
我有一个对象,设计用于对列表进行分页,并向用户发送一页结果。但是,我希望能够使用函数将行为传递给该对象。该行为将由对象使用列表中对象内部的方法动态生成行的内容Java 在功能接口中使用通用输入,java,function,generics,netbeans,Java,Function,Generics,Netbeans,我有一个对象,设计用于对列表进行分页,并向用户发送一页结果。但是,我希望能够使用函数将行为传递给该对象。该行为将由对象使用列表中对象内部的方法动态生成行的内容 public class InteractiveJSONList<T> { private final List<T> list; private List<Function<T, Object>> formatArgFunctionSequence; // .
public class InteractiveJSONList<T> {
private final List<T> list;
private List<Function<T, Object>> formatArgFunctionSequence;
// ... Irrelevant code truncated.
// Constructor
public InteractiveJSONList(List<T> list) {
this.list = list;
}
}
我使用Java8的流方法应用函数,使用列表中的每个项作为输入,然后收集结果并将它们作为数组提交给varArgs方法,以便稍后在String.format中使用
最后,这是实现该机制的一次尝试
List<String> data = ... //Using Strings at this point, but could be anything.
new InteractiveJSONList<String>(data)
.setStringBuildingSequence(input -> input.substring(0,5));
它编译并正确运行
有什么建议吗?此外,如果这是一个可怕的做法,我想要的目的,请让我知道。谢谢大家! 我不能重现这个问题,你能提供一个吗?顺便说一句,你可以将:
.collect(Collectors.toList()).toArray(新对象[stringFunctionSequence.size()])
更改为toArray()
。我在toArray()中提供数组大小
方法,以便使用所需的精确大小初始化数组,因为我已经知道了。(据我所知,否则它将被初始化为默认大小10。)但我感谢您的反馈!Jorn我将尝试创建一个可复制的示例。如果流具有大小
特征,它将使用列表
,则创建的数组应具有适合所有元素的正确大小
List<String> data = ... //Using Strings at this point, but could be anything.
new InteractiveJSONList<String>(data)
.setStringBuildingSequence(input -> input.substring(0,5));
List<String> data = ... //Using Strings at this point, but could be anything.
Function<String, Object> testFunction = input -> new InteractiveText(input.substring(0, 8));
new InteractiveJSONList<String>(data)
.setStringBuildingSequence(testFunction);