我有一个奇怪的问题,可能是因为我的课程结构有点复杂,但无论如何:
所以首先我有 2 个抽象类:TestAbstract1 和 TestAbstract2。
- TestAbstract2采用扩展 TestAbstract1 的类型
- TestAbstract1声明了一个名为valTest的类型 TestAbstract2[TestAbstract1] 的 val,它必须在子类中实现
代码 :
abstract class TestAbstract1 {
val valTest: TestAbstract2[TestAbstract1]
def meth1(): List[TestAbstract1] = {
valTest.meth2()
}
}
abstract class TestAbstract2[T <: TestAbstract1] {
def meth2(): List[T] = {
List()
}
}
然后我有一个扩展TestAbstract2的对象TestObject2,以及一个扩展TestAbstract1的基本类Test2,并且必须实现valTest:
class Test2 extends TestAbstract1 {
val valTest: TestAbstract2[Test2] = TestObject2
}
object TestObject2 extends TestAbstract2[Test2] { }
问题在这里:当我编译时,它告诉我:
[错误] 覆盖类型为 models.test.TestAbstract2[models.test.TestAbstract1] 的类 TestAbstract1 中的值 valTest;
[错误] 值 valTest 的类型不兼容
[错误] val valTest:TestAbstract2[Test2] = TestObject2
我不知道我做错了什么,因为如果我考虑多态规则,应该没问题...
你有什么主意吗 ?或者甚至是做我想做的更好的方法?
谢谢 !