我有一个可变长度的数组,我想从一个固定的位置读取。如果位置越界,我会读取一个null,而不是抛出。我当然可以这样做
if(theArray.length <= colNum){ result = null; }
else{ result = theArray[colNum]; }但这似乎有点不雅观。我希望能够进行一个单行或简单的函数调用,除了返回null之外,它的行为类似于theArray[colNum],而不是抛出越界异常。有没有什么我忽略了的东西?我是不是想多了?
发布于 2012-10-17 21:18:03
您可以使用ternary operator。
下面是一行代码:
result = ((colNum > theArray.length - 1) || (colNum < 0)) ? null : theArray[colNum];发布于 2012-10-17 21:22:49
取决于您认为更具可读性的内容,但您始终可以使用引发的异常:
public String read(String[] array, int index)
{
try
{
return array[index];
}
catch(IndexOutOfBoundsException e)
{
return null;
}
}发布于 2012-10-17 21:25:54
这取决于,“优雅”对你来说意味着什么?有几种方法可以做到这一点,如果你想要简短的代码,使用ternary operator
result = theArray.length <= colNum ? null : theArray[colNum];此外,您还可以进行读取,并尝试/捕获ArrayIndexOutOfBoundsException
try {
result = theArray[colNum];
} catch(ArrayIndexOutOfBoundsException e) {
result = null;
}您可以将这两者中的任何一个封装在一个方法中,因此您的调用代码将如下所示:
result = readFromArray(theArray);https://stackoverflow.com/questions/12935199
复制相似问题