Sar*_*eet 3 java recursion constructor scjp
考虑以下代码
class ConstructorDemo2{
ConstructorDemo2(){
this(1);
}
ConstructorDemo2(int i){
this();
}
public static void main(String[] args){
new ConstructorDemo2();
}
}
Run Code Online (Sandbox Code Playgroud)
Kathy Sierra的SCJP6书在第144页上说,这样的代码可能无法检测到并导致StackOverflowError.但与此同时,我们知道子类构造函数ALWAYS必须使用super()[默认由编译器提供] 来调用超类构造函数,但在下面的代码示例中,两个构造函数都在调用this()(相互调用).
它确实显示了error: recursive constructor invocation我的OpenJDK编译器中的错误,但Kathy Sierra的书中说这样的代码可能不会被编译器检测到并且会在运行时抛出异常.
因此,如果在SCJP/OCJP考试中向我展示了这样的代码示例,并询问它是否会编译,那么答案是什么?看起来有点暧昧
| 归档时间: |
|
| 查看次数: |
449 次 |
| 最近记录: |