Java 在同一构造函数中使用调用构造函数
在上面的代码中,构造函数在同一个构造函数中调用 上面代码的输出是著名的Java 在同一构造函数中使用调用构造函数,java,constructor,Java,Constructor,在上面的代码中,构造函数在同一个构造函数中调用 上面代码的输出是著名的java.lang.StackOverflowerError,因为在错误发生之前会调用构造函数 我的问题是,在什么样的真实场景中,在同一个构造函数中调用构造函数是有用的?我相信人们可以发明一个场景,但让构造函数递归通常不是一件有用的事情。一般来说,当构造函数在同一个类上调用new时,这是一个错误 这里是一个人为的例子,在这个例子中,我们使用递归来构造相同值的N个副本的列表 public class MyClass {
java.lang.StackOverflowerError
,因为在错误发生之前会调用构造函数
我的问题是,在什么样的真实场景中,在同一个构造函数中调用构造函数是有用的?我相信人们可以发明一个场景,但让构造函数递归通常不是一件有用的事情。一般来说,当构造函数在同一个类上调用
new
时,这是一个错误
这里是一个人为的例子,在这个例子中,我们使用递归来构造相同值的N个副本的列表
public class MyClass {
public static void main(String args[]) {
new MyClass();
}
public MyClass() {
new MyClass();
}
}
(是的,这种方法存在缺陷…我相信人们可以发明一种场景,但让构造函数递归通常不是一件有用的事情。一般来说,当构造函数在同一个类上调用
new
时,这是一个错误
这里是一个人为的例子,在这个例子中,我们使用递归来构造相同值的N个副本的列表
public class MyClass {
public static void main(String args[]) {
new MyClass();
}
public MyClass() {
new MyClass();
}
}
(是的,这种方法存在缺陷…在递归循环在某个点中断的情况下,它可能很有用-例如,使用
if
语句:
public class MyList {
private int value;
private MyList next;
public MyList(int value, int length) {
this.value = value;
if (length > 1) {
next = new MyList(value, length - 1);
}
}
}
类链接列表{
目标价值;
LinkedList下一步;
公共链接列表(最终迭代器迭代器){
this.value=iterator.next();
if(iterator.hasNext()){
this.next=新链接列表(迭代器);
}
}
}
这将递归调用构造函数,只要迭代器中有可用的元素。它可能在递归循环在某个点中断的情况下很有用,例如使用
if
语句:
public class MyList {
private int value;
private MyList next;
public MyList(int value, int length) {
this.value = value;
if (length > 1) {
next = new MyList(value, length - 1);
}
}
}
类链接列表{
目标价值;
LinkedList下一步;
公共链接列表(最终迭代器迭代器){
this.value=iterator.next();
if(iterator.hasNext()){
this.next=新链接列表(迭代器);
}
}
}
只要迭代器中有可用的元素,这将递归调用构造函数。这是为了什么?我个人觉得它没有什么实际用途,除非你有另一个构造函数接受参数,然后在另一个构造函数中调用它们是有意义的。可能有一个
节点
构造函数自动想要为新生成的便笺创建一个层次结构,并且正在调用另一个重载构造函数。这是为了什么?我个人觉得它没有什么实际用途,除非你有另一个构造函数接受参数,然后在另一个构造函数中调用它们是有意义的。可能有一个节点
构造函数,它自动想要为新生成的便笺创建一个层次结构,尽管它正在调用另一个重载构造函数。