3

尝试让包含数组列表的数组列表在我的程序中工作时遇到问题,我收到一个奇怪的警告说:将@SuppressWarnings“null”添加到 processArray(),无论我是否添加这个我的程序崩溃,有什么明显的我在这里做错了吗?任何帮助都会大有帮助,谢谢。

      private ArrayList<ArrayList<String>> processArray(ResponseList<Status> responses){

      ArrayList<ArrayList<String>> mainArray = null;
      ArrayList<String> innerArrays = null;

      for (Status response: responses ){
          String name, status, imgUrl, time;

          name = response.getUser().getName();
          status = response.getText();
          imgUrl = response.getUser().getProfileImageURL().toString();
          time = response.getCreatedAt().toString();

          ArrayList<String> rtLinks = checkLinks(response.getText());

          if(rtLinks != null){

              for (String tLink: rtLinks){

                  innerArrays.add(name);
                  innerArrays.add(status);
                  innerArrays.add(imgUrl);
                  innerArrays.add(time);
                  innerArrays.add(tLink);

                  mainArray.add(innerArrays);

              }

          }


      }
    return mainArray;
4

3 回答 3

5

你从来没有真正初始化这些数组列表中的任何一个。

你要

ArrayList<ArrayList<String>> mainArray = new ArrayList<ArrayList<String>>(); // or new ArrayList<>() in java 7

在内部 for 循环内

ArrayList<String> innerArrays = new ArrayList<String>(); // or new ArrayList<>() in java 7

此外,永远不要压制警告“只是为了让代码工作”。仅当您确切知道它们出现的原因以及您选择忽略它们的确切原因时才压制它们。

于 2012-05-18T22:19:54.053 回答
2

您的程序可能由于NullPointerException. 当您尝试访问其值为的变量时会发生这种情况null(称为取消引用空指针)。在访问这两个ArrayLists 中的任何一个之前,您需要对其进行初始化。尝试将两行更改为:

  ArrayList<ArrayList<String>> mainArray = new ArrayList<ArrayList<String>>();
  ArrayList<String> innerArrays = new ArrayList<String>();

这应该可以解决您的直接问题。

但是,我不确定您为什么要使用innerArrays列表。我会将最后一点重构为:

for (String tLink: rtLinks){
    ArrayList<String> tempList = new ArrayList<String>();
    tempList.add(name);
    tempList.add(status);
    tempList.add(imgUrl);
    tempList.add(time);
    tempList.add(tLink);
    mainArray.add(tempList);
}

并删除innerArrays变量。这样,范围更有限,代码运行更符合逻辑。

于 2012-05-18T22:26:17.770 回答
1

您正在尝试将 innerArrays 变量添加到您的主 ArrayList 中,但您在方法的开头已将您的主 ArrayList 声明为 null。将主 ArrayList 初始化为字符串的 ArrayLists 的新 ArrayList,您的代码应该可以工作。

于 2012-05-18T22:23:52.583 回答