【发布时间】:2010-12-01 03:13:14
【问题描述】:
假设我们有以下 Java 接口:
// Java
public interface Foo {
<T> T bar(Class<T> c);
}
我应该如何在 Scala 中扩展它?写作
// Scala
class FooString extends Foo {
override def bar(c: Class[String]): String = "hello, world";
}
将导致编译器抛出“类 FooString 需要是抽象的,因为类型为 [T](Class[T])T 的特征 Foo 中的方法 bar 未定义。”
提前致谢!
更新: 丑陋的事实是:我误解了 Java 中的泛型。
无论如何,尼古拉斯和沃尔特的回答都显示了我的困境的解决方案,尽管我更喜欢沃尔特的回答,因为它不那么冗长。
【问题讨论】:
-
你终于明白了!很高兴你已经理解了你在泛型上的错误。不客气。
标签: java scala generics interface type-parameter