Java 中的可变参数
Varargs in Java
所以我创建了一个 ListNode.java class 并且正在使用可变参数。我定义了构造函数 ListNode(int... values) 以便它会创建一个链接列表,其下一个引用根据您传入的内容定义。例如,
ListNode head = new ListNode(1, 2, 3); // is equivalent to 1 -> 2 -> 3 -> null
我正在测试当我什么都不传入时会发生什么,即 new ListNode()
这样的调用将导致
ListNode emptyHead = new ListNode(); // is equivalent to 0 -> null
你能解释一下为什么吗?下面是我对 ListNode.java.
的实现
public class ListNode {
public int val;
public ListNode next;
public ListNode(int val) {
this.val = val;
this.next = null;
}
public ListNode(int... values) {
if (values.length == 0) return;
this.val = values[0];
this.next = null;
ListNode ptr = this;
for (int i = 1; i < values.length; i++) {
ptr.next = new ListNode(values[i]);
ptr = ptr.next;
}
}
}
好吧,如果您不向构造函数传递任何内容,它会收到一个空数组。
您的 if (values.length == 0) return;
语句导致构造函数执行结束。
因此this.val
默认保持0
,this.next
默认保持null
。
所以我创建了一个 ListNode.java class 并且正在使用可变参数。我定义了构造函数 ListNode(int... values) 以便它会创建一个链接列表,其下一个引用根据您传入的内容定义。例如,
ListNode head = new ListNode(1, 2, 3); // is equivalent to 1 -> 2 -> 3 -> null
我正在测试当我什么都不传入时会发生什么,即 new ListNode()
这样的调用将导致
ListNode emptyHead = new ListNode(); // is equivalent to 0 -> null
你能解释一下为什么吗?下面是我对 ListNode.java.
的实现public class ListNode {
public int val;
public ListNode next;
public ListNode(int val) {
this.val = val;
this.next = null;
}
public ListNode(int... values) {
if (values.length == 0) return;
this.val = values[0];
this.next = null;
ListNode ptr = this;
for (int i = 1; i < values.length; i++) {
ptr.next = new ListNode(values[i]);
ptr = ptr.next;
}
}
}
好吧,如果您不向构造函数传递任何内容,它会收到一个空数组。
您的 if (values.length == 0) return;
语句导致构造函数执行结束。
因此this.val
默认保持0
,this.next
默认保持null
。