List <String>-空

时间:2019-08-17 15:04:33

标签: android

我正在尝试从JSON迭代List。当List不为null时,一切正常。当为null时,我得到以下信息:试图在空对象引用上调用接口方法'int java.util.List.size()'

 StringBuilder allAlsoAvailable = new StringBuilder();
            List<String> alsoAvailableList = example.getResult().getAlsoAvailableOn();
                    for (int i = 0; i < alsoAvailableList.size(); i++) {
                        allAlsoAvailable.append(alsoAvailableList.get(i));
                        if (i < alsoAvailableList.size() - 1) allAlsoAvailable.append("\n");
                    }

和LogCat显示问题出在以下一行:for (int i = 0; i < alsoAvailableList.size(); i++)

2 个答案:

答案 0 :(得分:1)

这是因为,如错误所指出的,您的alsoAvailableList为空,并且您正在尝试访问其方法size()

您应该首先检查列表是否为空,然后遍历列表。

例如:

Builder allAlsoAvailable = new StringBuilder();
List<String> alsoAvailableList = example.getResult().getAlsoAvailableOn();
if (alsoAvailableList != null) {
  for (int i = 0; i < alsoAvailableList.size(); i++) {
     allAlsoAvailable.append(alsoAvailableList.get(i));
     if (i < alsoAvailableList.size() - 1) allAlsoAvailable.append("\n");
  }
}

答案 1 :(得分:0)

Builder allAlsoAvailable = new StringBuilder();
List<String> alsoAvailableList = example.getResult().getAlsoAvailableOn();
if (alsoAvailableList != null) {
  for (int i = 0; i < alsoAvailableList.size(); i++) {
     allAlsoAvailable.append(alsoAvailableList.get(i));
     if (i < alsoAvailableList.size() - 1) allAlsoAvailable.append("\n");
  }
}

正如错误所解释的那样,您不能在null对象上调用方法,在这种情况下,您的alsoAvailableList为null,因此请确保在尝试使用它时不首先使其不为null。