我有一个不同长度的数组,我想从固定位置读取。如果位置超出范围,我想读取一个空值,而不是抛出。我当然可以做类似的事情
if(theArray.length <= colNum){ result = null; }
else{ result = theArray[colNum]; }
但这似乎有点不雅。我希望能够进行单行或简单的函数调用,其行为类似于theArray[colNum]
除了返回null
而不是抛出越界异常。有没有类似的东西我忽略了?这是我想太多了吗?
您可以使用三元运算符。
这是一个单行:
result = ((colNum > theArray.length - 1) || (colNum < 0)) ? null : theArray[colNum];
取决于您认为更具可读性的内容,但您始终可以使用引发的异常:
public String read(String[] array, int index)
{
try
{
return array[index];
}
catch(IndexOutOfBoundsException e)
{
return null;
}
}
这取决于,“优雅”对你意味着什么?,有几种方法可以做到这一点,如果你想要短代码,请使用三元运算符:
result = theArray.length <= colNum ? null : theArray[colNum];
此外,您可以进行读取,并尝试/捕获ArrayIndexOutOfBoundsException:
try {
result = theArray[colNum];
} catch(ArrayIndexOutOfBoundsException e) {
result = null;
}
您可以将两者中的任何一个封装在一个方法中,因此您的调用代码将如下所示:
result = readFromArray(theArray);