0

我有一个不同长度的数组,我想从固定位置读取。如果位置超出范围,我想读取一个空值,而不是抛出。我当然可以做类似的事情

if(theArray.length <= colNum){ result = null; }
else{ result = theArray[colNum]; }

但这似乎有点不雅。我希望能够进行单行或简单的函数调用,其行为类似于theArray[colNum]除了返回null而不是抛出越界异常。有没有类似的东西我忽略了?这是我想太多了吗?

4

3 回答 3

2

您可以使用三元运算符

这是一个单行:

result = ((colNum > theArray.length - 1) || (colNum < 0)) ? null : theArray[colNum];
于 2012-10-17T13:18:03.057 回答
1

取决于您认为更具可读性的内容,但您始终可以使用引发的异常:

public String read(String[] array, int index)
{
    try
    {
        return array[index];
    }
    catch(IndexOutOfBoundsException e)
    {
        return null;
    }
}
于 2012-10-17T13:22:49.110 回答
0

这取决于,“优雅”对你意味着什么?,有几种方法可以做到这一点,如果你想要短代码,请使用三元运算符

result = theArray.length <= colNum ? null : theArray[colNum];

此外,您可以进行读取,并尝试/捕获ArrayIndexOutOfBoundsException

try { 
    result = theArray[colNum];
} catch(ArrayIndexOutOfBoundsException e) { 
    result = null;
}

您可以将两者中的任何一个封装在一个方法中,因此您的调用代码将如下所示:

result = readFromArray(theArray);
于 2012-10-17T13:25:54.283 回答