有一个常见的 Java 习惯用法(Enum
例如见)来声明必须匹配实际派生类型的泛型类型变量。
class Enum<E extends Enum<E>> {
...
}
或者,如果需要更通用的参数:
abstract class Foo<T, Actual extends Foo<T, Actual>> {
//now we can refer to the actual type
abstract Actual copy();
}
class Concrete<T> extends Foo<T, Concrete<T>> {
Concrete<T> copy() {...}
}
事情很快就会变得非常冗长,所以我想 Scala 可能有比上面例子的直译更好的东西。
有没有更优雅的方法来实现这一点?