使用可变数量参数的方法

时间:2012-12-09 19:00:47

标签: java

我正在尝试根据参数的数量创建一个使用不同构造函数构建类(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];   
}

2 个答案:

答案 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只有在第一部分评估为真时才会被调用。