api doc说:确保索引在数组,列表或大小大小的字符串中指定有效元素。
但是在这个方法中传递'target'数组或列表字符串?
答案 0 :(得分:6)
可以使用基于0的索引访问Array
,List
和String
中的元素。
假设您要使用索引从List访问特定元素。在调用list.get(index)
之前,您可以使用以下内容检查index
是否介于0和list.size()
之间以避免IndexOutOfBoundsException
:
if (index < 0) {
throw new IllegalArgumentException("index must be positive");
} else if (index >= list.size()){
throw new IllegalArgumentException("index must be less than size of the list");
}
Preconditions
类的目的是用更紧凑的
Preconditions.checkElementIndex(index,list.size());
因此,您不需要传递整个目标列表实例。相反,您只需要将目标列表的大小传递给此方法。
答案 1 :(得分:3)
方法Precondition.checkElementIndex(...)不关心'target'。您只需传递size
和index
,如下所示:
public String getElement(List<String> list, int index) {
Preconditions.checkElementIndex(index, list.size(), "The given index is not valid");
return list.get(index);
}
根据Guava's reference,方法checkElementIndex
可以按如下方式实施:
public class Preconditions {
public static int checkElementIndex(int index, int size) {
if (size < 0) throw new IllegalArgumentException();
if (index < 0 || index >= size) throw new IndexOutOfBoundsException();
return index;
}
}
正如您所看到的,它不需要知道列表,数组或其他任何内容。
答案 2 :(得分:1)
您不需要“target”来了解int索引是否对给定大小的列表,字符串或数组有效。如果index >= 0 && index < [list.size()|string.length()|array.length]
则有效,否则无效。