我有以下课程:
package org.gradle;
public class Supcl {
public class Inner extends Supsupcl {
public Inner(int a) {
System.out.println(a);
}
}
}
Run Code Online (Sandbox Code Playgroud)
和
package org.gradle;
public class Subcl extends Supcl.Inner {
public Subcl() {
Supcl.Inner.super(34); //error: No enclosing instance of type Supcl is
//available due to some
//intermediate constructor invocation
}
}
Run Code Online (Sandbox Code Playgroud)
和班级Supsupcl:
package org.gradle;
public class Supsupcl {}
Run Code Online (Sandbox Code Playgroud)
如果我尝试更换Supcl.Inner.super(34);与super(34);同样的错误会发生.怎么办?
您正在引用嵌套到实例的内部类Supcl,因此初始化内部类的正确习惯是:
new Supcl().new Inner(int i)
(assuming Supcl has a 0-argument constructor or the default constructor)Run Code Online (Sandbox Code Playgroud)
您无法super在构造函数外部调用,因此您必须将其作为Inner(int i)构造函数代码的第一行调用.
| 归档时间: |
|
| 查看次数: |
3780 次 |
| 最近记录: |