本帖最后由 sprinter 于 2015-3-1 10:36 编辑
关于构造方法的递归问题。- <code><font size="2">public class MyClass {
- public static void main(String[] args) {
- new MyClass(0);
- }
- public MyClass(int num) {
- if ((num++) < 5) {
- System.out.print(num);
- new MyClass(num);//用new关键字就不是递归了
- // MyClass(num);
- // 错误:没有为类型 MyClass 定义方法 MyClass(int)
- }
- }
- /*
- * private void MyClass(int num) {
- * //普通方法可以和构造方法同名
- * //提示:此方法具有构造函数名
- * //建议:更改为构造函数
- * }
- */
- class a {
- public a() {
- // this();//错误:递归性构造函数调用 MyClass.a()
- //this(2);//错误:递归性构造函数调用 MyClass.a(int)
- }
- public a(int a) {
- this();
- }
- }
- }
- </font></code>
复制代码
结论:
- 构造方法不能递归,就类似于static不能修饰局部变量一样。
- 在java中有一种错误叫Recursive constructor invocation,即递归性构造函数调用。
|