有一个班级:
public class DeserializerHelper<T> extends AbstractSchemaHelper {
public DeserializerHelper(Map<String, Object> config, Class<T> messageClass) {
this(config, messageClass, null);
}
}
我正在尝试在Scala中对其进行更新:
val decoder = new DeserializerHelper(config, classOf[GenericRecord])
但是我得到了Type DeserializerHelper takes type parameters
。
[ERROR] found : scala.collection.immutable.Map[String,Object]
[ERROR] required: java.util.Map[String,Object]
如何解决此问题?谢谢
答案 0 :(得分:1)
很显然,您尝试将其错误地放入Map
中。 Scala的scala.collection.immutable.Map
和Java的java.util.Map
无关。这在这里工作正常:
Java:
public class DeserializerHelper<T> {
public DeserializerHelper(java.util.Map<String, Object> conf, Class<T> msg){}
}
斯卡拉:
object newDeserializerHelper {
def main(args: Array[String]): Unit = {
val config = new java.util.HashMap[String, AnyRef]
val decoder = new DeserializerHelper(config, classOf[String])
println("compiles...")
}
}
如果您使用javac
编译前者,而使用scalac
编译后者,那么一切都会正常进行,而不会出现错误或警告。
或者,在Scala一侧使用JavaConverters
。