这个问题可能已经被问到了.
为什么不支持?
class A;
class B[T];
class MyClass[T <: B[U <: A]];
我可以耸耸肩作为语言语法的一些限制,但现在我担心会有一些“更深层次”的解释.
class A;
class B[T];
class MyClass[U <: A, T <: B[U]];
最佳答案 支持这样的嵌套类型边界.如果你不希望U成为MyClass的参数,你可以写
class MyClass[T <: B[_ <: A]]
class C extends A
class D extends B[C]
def x: MyClass[D] = ??? // compiles
def y: MyClass[B[C]] = ??? // compiles
def z: MyClass[B[String]] = ??? // doesn't compile because `String` is not a subtype of `A`
这符合你的要求吗?