Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在功能接口中使用通用输入_Java_Function_Generics_Netbeans - Fatal编程技术网

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);