小编mos*_*eng的帖子

如何在Java中实现函数参数的元组解包?

我创建了一些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)

java java-8

5
推荐指数
1
解决办法
739
查看次数

标签 统计

java ×1

java-8 ×1