Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 子类型链-只是语法限制?_Scala_Polymorphism - Fatal编程技术网

Scala 子类型链-只是语法限制?

Scala 子类型链-只是语法限制?,scala,polymorphism,Scala,Polymorphism,这个问题可能已经被问过了 为什么不支持这一点 class A; class B[T]; class MyClass[T <: B[U <: A]]; A类; B类[T]; 类MyClass[T支持这样的嵌套类型边界。如果不希望U成为MyClass的参数,可以编写 class MyClass[T <: B[_ <: A]] class C extends A class D extends B[C] def x: MyClass[D] = ??? // compile

这个问题可能已经被问过了

为什么不支持这一点

class A;
class B[T];
class MyClass[T <: B[U <: A]];
A类;
B类[T];

类MyClass[T支持这样的嵌套类型边界。如果不希望
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` 
class MyClass[T
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`