Java 强制类型而不创建临时变量

Java 强制类型而不创建临时变量,java,generics,types,casting,vavr,Java,Generics,Types,Casting,Vavr,我有以下功能: <K, P, Q> Map<K, List<Q>> convert(Map<K, ? extends List<? extends P>> input) { return HashMap.empty(); } Map和List类来自。使用或调用,以在调用convert时指定类型参数 方法调用: 方法名([ArgumentList]) 打字名。[TypeArguments]标识符([ArgumentLis

我有以下功能:

  <K, P, Q> Map<K, List<Q>> convert(Map<K, ? extends List<? extends P>> input) {
    return HashMap.empty();
  }
Map和List类来自。

使用或调用,以在调用
convert
时指定类型参数

方法调用:
方法名([ArgumentList])
打字名。[TypeArguments]标识符([ArgumentList])
ExpressionName。[TypeArguments]标识符([ArgumentList])
小学。[TypeArguments]标识符([ArgumentList])
太好了。[TypeArguments]标识符([ArgumentList])
打字名。超级的。[TypeArguments]标识符([ArgumentList])
ArgumentList:表达式{,表达式}

请注意,在使用
TypeArguments
时,我们不能忽略实例名->(this)

Map<Integer, List<Boolean>> merged = this.<Integer, String, Boolean>convert(stringMap).merge(convert(doubleMap));
Map merged=this.convert(stringMap).merge(convert(doubleMap));

可能使用类型witness
Map merged=this.convert(stringMap.merge)(convert(doubleMap))@samabcde,谢谢你,成功了。请随意添加它作为答案,这样我就可以接受并结束这个问题。如果您不向该方法提供任何与
Q
有关的输入,您的convert方法将如何计算类型参数
Q
,该方法可用于生成输出?
Map<Integer, List<? extends String>> stringMap = HashMap.empty();
Map<Integer, List<? extends Double>> doubleMap = HashMap.empty();
Map<Integer, List<Boolean>> merged = convert(stringMap).merge(convert(doubleMap));
'merge(io.vavr.collection.Map<? extends java.lang.Integer,? extends io.vavr.collection.List<java.lang.Object>>)' in 'io.vavr.collection.Map' cannot be applied to '(io.vavr.collection.Map<java.lang.Integer,io.vavr.collection.List<? extends java.lang.Double>>)'

Required type: Map<? extends Integer,? extends List<Object>>
Provided: Map<Integer,List<? extends Double>>
Map<Integer, List<Boolean>> merged2 = ((Map<Integer,List<Boolean>>)convert(stringMap)).merge(doubleMap);
Inconvertible types; cannot cast 'io.vavr.collection.Map<java.lang.Integer,io.vavr.collection.List<java.lang.Object>>' to 'io.vavr.collection.Map<java.lang.Integer,io.vavr.collection.List<java.lang.Boolean>>'
Map<K, V> merge(Map<? extends K, ? extends V> that);
Map<Integer, List<Boolean>> merged = this.<Integer, String, Boolean>convert(stringMap).merge(convert(doubleMap));