假设我有以下内容:
class Class[CC[A, B]]
class Thing[A, B <: Int]
class Test extends Class[Thing] // compile error here
我遇到了编译器错误:
类型参数(cspsolver.Thing)的种类与Class中类型参数(类型CC)的期望种类不符。cspsolver.Thing的类型参数与类型CC的期望参数不匹配:类型C的边界<:Int比类型B的声明边界>:Nothing <:Any更加严格。
然而,当我修改代码使其如下时:
class Class[CC[A, B]]
class Thing[A, B] {
type B <: Int
}
class Test extends Class[Thing]
代码可以顺利编译。它们在功能上不是等价的吗?
B
和类型成员B
。它们具有相同的名称(因此只有一个可见),但它们并不相同。 - senia