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