我认为允许递归有时非常方便,不是因为我可以在“递归”中编码,而是因为我可以为某些情况保存一些代码空间,如下所示
public class SomeClass
{
private int a;
SomeClass(int a)
{
this.a = a;
}
SomeClass()
{
SomeClass(3);
}
}
当一个构造函数试图利用包含大块代码的另一个构造函数时,这尤其有效。
但是,Java显然不支持此功能,我认为这并不是一个很好的理由。有人可以解释为什么吗?
答案 0 :(得分:13)
Java支持这一点,但您需要使用不同的语法:
this(3);
答案 1 :(得分:5)
您可以使用this
关键字在构造函数中调用另一个构造函数:
public class SomeClass
{
private int a;
SomeClass(int a)
{
this.a = a;
}
SomeClass()
{
this(3);
}
}
从Java语言规范,8.8.7.1 Explicit Constructor Invocations部分:
备用构造函数调用以关键字this开头 (可能以显式类型参数开头)。他们习惯了 调用同一个类的替代构造函数。
我不知道这与recursion有什么关系。
答案 2 :(得分:1)
您要找的是this(3)
,而不是SomeClass(3)
答案 3 :(得分:0)
它不被称为递归。 Java具有您可以在类中重载构造函数的功能....