我正在尝试根据参数的数量创建一个使用不同构造函数构建类(PhoneBook)的新对象的方法,但它会出错
(线程“main”中的异常java.lang.ArrayIndexOutOfBoundsException:0)
public static PhoneBook createObjects(String fName,String lName,String num,String...optional)
{
n++;
if (optional[0]==null)
ArrayOfObjects[n]=new PhoneBook(fName,lName,num);
else if (optional[1]==null)
ArrayOfObjects[n]=new PhoneBook(fName,lName,num,optional[0]);
return ArrayOfObjects[n];
}
答案 0 :(得分:3)
您应该检查optional[0] == null
以确定是否存在可选参数,而不是检查是否optional.length
。
optional[1]
同样如此。
答案 1 :(得分:0)
您应该检查optional[0]
,而不是在此处检查optional[1]
和optional.length
。另外,请注意optional
本身可能是null
,所以类似于:
if(optional != null) {
if(optional.length > 0) {
// I now know that optional has at least one element in it, and optional[0] should be valid, though I don't know that it is non-null.
if(optional.length > 1) {
// I now know that optional[1] is valid, though I do not know it is non-null.
}
}
}
如果您需要非空:
if(optional.length > 0 && optional[0] != null)
第二部分optional[0] != null
只有在第一部分评估为真时才会被调用。