为什么Java不允许在构造函数中递归?

Kan*_*Yoo -3 java recursion constructor

我认为允许递归有时候非常方便,不是因为我可以在"递归"中编码,而是因为我可以为某些情况保存一些代码空间,如下所示

public class SomeClass
{
   private int a;

   SomeClass(int a)
   {
      this.a = a;
   }

   SomeClass()
   {
      SomeClass(3);
   }
}
Run Code Online (Sandbox Code Playgroud)

当一个构造函数试图利用包含大块代码的另一个构造函数时,这尤其有效.

但是,Java显然不支持这个功能,我相信它并不是一个很好的理由.有人可以解释为什么吗?

Tay*_*mon 13

Java确实支持这一点,但您需要使用不同的语法:

this(3);
Run Code Online (Sandbox Code Playgroud)


Xav*_*ica 5

您可以使用this关键字在构造函数中调用另一个构造函数:

public class SomeClass
{
   private int a;

   SomeClass(int a)
   {
      this.a = a;
   }

   SomeClass()
   {
      this(3);
   }
}
Run Code Online (Sandbox Code Playgroud)

从Java语言规范,第8.8.7.1显式构造函数调用:

替代构造函数调用以关键字this开头(可能以显式类型参数开头).它们用于调用同一类的备用构造函数.

但是,我没有看到与递归有什么关系.