我创建了一些tuple类,并将它们放入Java集合中.但我不希望tuple在迭代集合时直接使用函数参数.所以我实现了元组解包,如下面的代码.
基本上它可以工作,但问题是需要进行类型转换:
map((Func2<Long, Long, Long>) (a, b) -> a + b)
有没有办法在这里删除类型转换?
编辑:
也许我没有说清楚,不仅tuple2,而且tuple3,tuple4......应予以支持.@飞扬的回答作品大为Tuple2,但不起作用tuple2,tuple3,tuple4在此期间,
package test;
import com.google.common.collect.Iterables;
import java.util.Arrays;
import java.util.function.Function;
import static test.TupleIterable.Tuple.tuple;
public interface TupleIterable<T> {
Iterable<T> apply();
static <E> TupleIterable<E> from(Iterable<E> iterable) {
return () -> iterable;
}
default <E> TupleIterable<E> map(Function<? super T, ? extends E> op) {
return () -> Iterables.transform(TupleIterable.this.apply(), op::apply);
}
interface Func2<T1, T2, …Run Code Online (Sandbox Code Playgroud)