Mal sehen, was das bedeutet in Plain Englisch.
bedeutet: Lassen Sie A eine Klasse sein, die einen Typparameter akzeptiert.
class C[M[X] <: A[X]]
bedeutet: Sei C eine Klasse sein, die einen Typ-Parameter annimmt, die eine Klasse sein sollen, dass ein Typ-Parameter übernimmt und, parametriert, ist eine Unterklasse der Klasse A parametriert mit dem gleichen Typ.
Wenn Sie schreiben
new C[A]
Sie sagen: eine Instanz von C erstellen mit A als Parameter. Entspricht A den oben genannten Kriterien? Ja, es ist eine Klasse, die einen Typparameter benötigt und parametrisiert ist eine Subklasse von ihr parametrisiert.
Wenn Sie jedoch schreiben
new C[A[Int]]
der Typparameter Sie versuchen, C, A [Int] zu geben, entspricht nicht den Kriterien: A [Int] keine Typparameter übernimmt, was der Compiler Ihnen freundlich sagt. (Und es ist auch keine Unterklasse von A [X].)
wird dies auch nicht funktionieren. Das Problem ist, dass C einen Typ mit einem Typparameter erwartet. Wenn Sie versuchen, das neue C [A] auszuprobieren, wird dies funktionieren, da A ein Typargument benötigt. – tim
Dies funktioniert nicht - C erwartet nun zwei Typparameter. – gpampara