【发布时间】:2012-04-09 09:24:09
【问题描述】:
我正在尝试在 scala 中实现一个通用的 java 接口。我看过: How do I extend Java interface containing generic methods in Scala? 还有Scala: Overriding Generic Java Methods II
但我仍然找不到答案。这是来自 Spring web 的方法签名:
T read(Class<? extends T> clazz, HttpInputMessage inputMessage)
throws IOException, HttpMessageNotReadableException;
我在 scala 中尝试了以下操作:
@throws(classOf[IOException])
@throws(classOf[HttpMessageNotReadableException])
override def read[T](clazz : Class[_ <: T], inputMessage : HttpInputMessage) : T ={
}
但我收到一条错误消息,指出此方法不会覆盖任何内容。如果我通过以下方式擦除类型:
override def read(clazz : Class[_], inputMessage : HttpInputMessage) : AnyRef ={
它将方法标记为被覆盖。我的问题是如何在这里保持类型安全并强制它覆盖接口方法?
问候
编辑
弹簧接口:
public interface HttpMessageConverter<T> {
T read(Class<? extends T> clazz,
HttpInputMessage inputMessage)
throws IOException,
HttpMessageNotReadableException
}
【问题讨论】:
-
您能否提供您尝试覆盖/实现的方法所在的 Spring Web 源代码的链接?
标签: scala overriding scala-java-interop