如何使用Google Guava的Preconditions.checkElementIndex?

时间:2011-08-02 01:38:19

标签: java guava

api doc说:确保索引在数组,列表或大小大小的字符串中指定有效元素。

但是在这个方法中传递'target'数组或列表字符串?

3 个答案:

答案 0 :(得分:6)

可以使用基于0的索引访问ArrayListString中的元素。

假设您要使用索引从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'。您只需传递sizeindex,如下所示:

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]则有效,否则无效。