は、私が持っていると言う:私はそれがこのようになりますようにコードを修正しかしこの型のパラメータ構文がコンパイルされない理由は何ですか?
kinds of the type arguments (cspsolver.Thing) do not conform to the expected kinds of the type parameters (type CC) in class Class. cspsolver.
Thing's type parameters do not match type CC's expected parameters: type C's bounds <: Int are stricter than type B's declared bounds >: Nothing <: Any
:
class Class[CC[A, B]]
class Thing[A, B] {
type B <: Int
}
class Test extends Class[Thing]
それは罰金コンパイル
class Class[CC[A, B]]
class Thing[A, B <: Int]
class Test extends Class[Thing] // compile error here
私はコンパイラエラーを取得します。両方とも機能的に同等ではありませんか?
最後の例では、パラメータ 'B'とタイプメンバー 'B'を入力しています。彼らは同じ名前(1つだけが見える)を持っている、彼らは同じではないボット。 – senia
@senia、同じ名前を使用すると便利な場合はありますか? – huynhjl
@huynhjl:そうは思いません。しかし、場合によってはシャドウイングが便利です。名前を再利用することができます。暗黙のうちにシャドーイングの部分的な有用な乱用もあります:[この回答](http://stackoverflow.com/a/17852226/406435)。 – senia