scala - 在 Scala 中实现 Java 接口(interface)方法

标签 scala

我在 Java 接口(interface)上定义的 getHandler 方法的实现失败了,我不知道为什么。这是方法签名:

<H extends EventHandler> H getHandler( Type<H> type, int index );

我在 Scala 中的实现是:

def getHandler[H <: com.google.gwt.event.shared.EventHandler]
    (aType: Type[H], index: Int): H 
    = new com.google.gwt.event.shared.EventHandler() {}

...但是编译器给我这个消息:

type mismatch;  
    found: java.lang.Object with com.google.gwt.event.shared.EventHandler
    required: H

我哪里做错了?

最佳答案

我认为这是因为您的实现不支持接口(interface)的约定。 H 可以是EventHandler任何 子类型,由aType 参数的类型决定。但是您的实现始终返回 EventHandler 的相同匿名子类型,无论作为 aType 参数传递的是什么。

我不知道正确的实现是什么,但我看不出如果不以某种方式使用 aType 参数如何实现它。

关于scala - 在 Scala 中实现 Java 接口(interface)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3614498/

相关文章:

scala - 如何在RDD中展平列表?

scala - 添加对 Scala 枚举进行操作的方法

scala - 如何将列从十六进制字符串转换为长字符串?

scala - 向编译器请求有关@inline 的更多信息?

xml - java.nio.charset.UnmappableCharacterException : Input length = 1

arrays - 我们可以改进我的代码以在 Scala 中交换相邻的数组元素吗?

scala - 使用Scalaz或Shapeless将选项的元组转换为元组的选项

scala - 应用程序中的 Spark 调度 : performance issue

scala - 是否可以检查 Dataframe 是否是 Spark 中仅应用宽变换或窄变换的结果?

Scala-还有另一种方法来编写这个 foreach 方法吗?