执行Java口在卡拉的结果不相容的种类型的地图

0

的问题

我有一个Java界面,我想到实现,在卡拉. 该界面包含下列方法-宣言:

 List<Map<String, Object>> xyz(Map<String, Object> var1, Map<String, Object> var2);

我的卡拉实施的是:

override def testComponent( input: java.util.Map[String, Object], metadata: java.util.Map[String, Object] )
  {

    val list: util.List[Map[String, AnyRef]] = new util.ArrayList[Map[String, AnyRef]]

     return list
  }

错误:压倒一切的方法xyz在的特质ITester的类型(x1美元:java。工具.地图[串,对象],x$2:java。工具.地图[串,目])java。工具.列表[java。工具.地图[串,目]]; 方法testComponent有不兼容的类型 复盖def testComponent(输入:java。工具.地图[串,对象],元数据:java.工具.地图[串,目])

我不知道究竟是什么的问题。

interface java scala scala-java-interop
2021-11-20 13:48:55
1

最好的答案

3

您的定义 testComponent 具有类型 Unit 因为它是使用定义的(废弃在最近的版本斯卡拉)程序的语法 def name(args) { } (即没有 = {). 它第一次通过编纂,因为斯卡拉允许一个值被丢弃的时候 Unit 预期(认行为可以由一个警告的编译器的选择 -Ywarn-value-discard). 你可以解决这个由是明确的,你想要这个方法被称为价值包括通过 =.

override def testComponent(input: java.util.Map[String, Object], metadata: java.util.Map[String, Object]) = {
  val list: util.List[Map[String, AnyRef]] = new util.ArrayList[Map[String, AnyRef]]
  list  // return should be avoided in Scala: it's not necessary and can introduce some really subtle bugs
}

它通常是一个很好的想法是明确的关于此种类型的公共方法。 或者,这还应的工作:

override def testComponent(input: java.util.Map[String, Object], metadata: java.util.Map[String, Object]) =
  new ArrayList[Map[String, AnyRef]]
2021-11-22 00:21:31

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................