如何在Java8中使用流返回特定类型的数组而不是泛型类型的数组

nbk

我有以下类定义:

public class Triple<T,U,V> {

    private T t;
    private U u;
    private V v;

    public Triple(T t, U u, V v){
        this.t  = t;
        this.u = u;
        this.v  = v;
    }

    public T t(){
        return t;
    }

    public U u(){
        return u;
    }

    public V v(){
        return v;
    }
}

以及

public class Tuple <T,U>{

    private T t;
    private U u;

    public Tuple(T t, U u){
        this.t = t;
        this.u = u;
    }

    public T t(){
        return t;
    }

    public U u(){
        return u;
    }
}

最后

public class State {
    private String name;

    public State(String name){
        this.name = name;
    }
}

我想创建一个方法,该方法将可变数量的三元组作为参数并返回类型的值Tuple<Tuple<State,String>,State>[]-这是一个元组数组,其中每个元组都具有状态和字符串的元组作为其第一成员,而其第二个成员具有州。我写的但不起作用的方法如下:

public static Tuple<Tuple<State,String>,State>[] mkRelationOne(Triple<String,String,String>...tr){
    return Arrays.stream(tr).map(
            x->new Tuple<Tuple<State,String>,State>(
                new Tuple<State,String>(
                    new State(x.t()), x.u()
                ),
                new State(x.v())
            )
        ).toArray(Tuple<Tuple<State,String>,State>[]::new);
}

错误消息是Cannot create a generic array of type Tuple<Tuple<State,String>,State>如果它具有类型(类型为),它如何通用Tuple<Tuple<State,String>,State>以及如何解决此问题,使其返回要返回的数组?谢谢!

尤金

您正在尝试在其中创建一个generic 数组,Java不支持数组不能使用类型参数声明数组。

那就是你不能创建一个通用数组,但是可以声明一个:

public static Tuple<Tuple<State, String>, State>[] mkRelationOne(Triple<String, String, String>... tr) {
    return (Tuple<Tuple<State, String>, State>[]) Arrays.stream(tr).map(
            x -> new Tuple<>(
                    new Tuple<>(
                            new State(x.t()), x.u()),
                    new State(x.v())))
            .toArray(Tuple[]::new);
}

这将起作用,但会生成警告。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Typescript泛型中获取数组类型

如何正确使用泛型类型的数组?

如何使用泛型类型数组和泛型类型类作为构造函数中的参数?

Java泛型和数组类型,并非不是您所想的(例如,来自泛型类型的数组)

如何在Java中使用泛型类型获取类

如何在Java中使用流利的接口和泛型来修复对象返回类型

如何在使用泛型的方法中返回不同的类型?

如何在java中过滤泛型值数组并使其返回泛型数组?

如何在Java中使用泛型复制数组

如何使用Java中的泛型方法对每个类型数组进行排序?

如何在Scala中使用嵌套的泛型类型作为方法返回类型

如何在类中使用扩展的泛型类型的类型?

返回此数组的泛型类型的类型提示数组

如何在具有泛型参数和返回类型方法的Java中使用反射获取类的实例?

Java 8:比较器返回Object的流,而不是特定的类型

使用映射类型将泛型类型的数组映射到其他(返回)数组

Java中数组和泛型的类型规则

类型T的数组(Java泛型)

Java泛型。通用类型的数组

如何使用类型参数符合协议的泛型数组?

数组作为 Kotlin 中的泛型类型

如何在TypeScript中返回泛型类型

如何在Action <IBuilder <T >>中使用泛型来处理特定于类型的配置?

如何在 Typescript 中使用泛型动态设置特定类型的值

如何在派生类型中使用泛型方法

如何在接口的方法中使用泛型类型参数

如何在Nim中使用默认泛型类型?

如何在扩展方法中使用泛型类型成员?

初始化泛型类型的Java泛型数组