gpt4 book ai didi

Java 8 : Input a list of functional Interfaces and call them dynamically after . 流()

转载 作者:行者123 更新时间:2023-12-01 12:38:50 24 4
gpt4 key购买 nike

我有以下方法:


public void caller(){
List<Class1> data1 = Arrays.asList(new Class1(), new Class1() ...);
List<Class2> data2 = Arrays.asList(new Class2(), new Class2() ...);

// The following is what I'm trying to implement:
List<BiConsumer<Class1, Double>> peeks1 = Arrays.asList(Class1::setOneNum, Class1::setAnotherNum, Class1:: setMoreNum);
List<BiConsumer<Class2, Double>> peeks2 = Arrays.asList(Class2::setSomeNum1, Class2::setSomeNum2);

helper(data1, peeks1);
helper(data2, peeks2);
...
}

private <T> List<T> helper(List<T> data, List<BiConsumer<T, Double>> peeks) {

for(BiConsumer<T, Double> singlePeek: peeks){
data = data.stream()
.peek(a -> singlePeek.accept(a, math.random()))
.collect(Collectors.toList());
}

return data;
}

Class1Class2还有其他共同的实​​现,唯一的区别是在.stream()之后调用的方法是为什么我要尝试将函数“合并”到一个 helper 中。

其中 BiConsumer 是一个 setter。我想在 stream() 之后调用一个 setter 列表。但是我无法将功能接口(interface)列表输入到 helper() (我尝试的是 Arrays.asList(Class1::setNum, Class1::setAnotherNum, Class1::setMoreNum) 不能作为输入,因为 Array.asList() 只接受 Object)。那么有什么解决方法吗?谢谢!

@user7 感谢您指出。我很粗心,但我已经修正了“打字错误”。并添加了调用函数。

最佳答案

调用 .asList 方法时必须指定目标类型:

Arrays.<BiConsumer<Object, Double>>asList(Class1::setOneNum, ...)

更新:

根据问题的更新代码,Arrays.asList 的结果没有直接交给 helper 方法,因此不需要显式输入。

代码无法正常工作的唯一可能原因是:

  1. 至少有一个方法(setOneNum、setSomeNum1、...)的参数类型错误

  2. 至少有一个方法不是静态的

关于Java 8 : Input a list of functional Interfaces and call them dynamically after . 流(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62457053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com