我有一个使用其子类之一作为参数的类。构造该子类时,我希望能够使用this
作为该参数的值:
class A(val b: B)
class B extends A(this)
但是,这无法编译
this can be used only in a class, object, or template
[error] class B extends A(this)
[error] ^
有什么办法可以解决这个问题?我很确定可以用Java编写这样的模式。
答案 0 :(得分:2)
我不太确定最后一条声明:
public class MyClass {
static class A {
A(B b) {
System.out.println(b.value);
}
}
static class B extends A {
String value;;
B() {
super(this);
value = "x";
}
}
public static void main(String args[]) {
new B();
}
}
出现以下错误:
/MyClass.java:10: error: cannot reference this before supertype constructor has been called
super(this);
^
没有充分的理由尝试在构造对象本身之前让this
引用转义构造函数的范围。重构它。