我有以下类定义:
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] 删除。
我来说两句