【发布时间】:2020-09-11 09:51:56
【问题描述】:
如何在 Scala 的构造函数中扩展一个期望 Map<?, ?> 的 Java 类?
Java 类的样子
public class MyJavaClass {
private final Map<String, ?> originals;
public MyJavaClass(Map<?, ?> originals, Map<String, ?> configProviderProps, boolean doLog) { ... }
public MyJavaClass(Map<?, ?> originals) {
this(originals, Collections.emptyMap(), true);
}
}
在 Scala 中,我试图做类似下面的事情,但我的 IDE 告诉我它“无法解析重载的构造函数”:
class myScalaClass[K <: AnyRef, V <: AnyRef](origi: Map[K, V]) extends MyJavaClass(origi) { ... }
还尝试将AnyRef 替换为java.lang.Object,但未成功。我正在使用 Java 8 和 Scala 2.12.11。
【问题讨论】:
-
通配符对你有用还是你必须知道类型 K 和 V?另外,我认为您根本不需要上限
-
其实,从头开始,你不需要通配符
标签: java scala generics scala-java-interop existential-type