如何将对象添加到Java列表?

时间:2013-12-03 11:04:41

标签: java android list nullpointerexception

这可能是一个非常愚蠢的问题,但我继续获得NullPointer。

在我的Android应用程序中,我有一个名为MyMetadata的类,我想使用此类的对象填充List。所以我尝试按如下方式这样做:

List<MyMetadata> metadataList;
MyMetadata myMetadata = new MyMetadata("first string", "second string");
Log.i(this, myMetadata.toString());
metadataList.add(myMetadata);

Log.i()显示一行com.mycompany.model.MyMetadata@41af34301,因此确实存在。但是当我尝试将它添加到列表中时,我得到一个NullPointerException。

有人知道我在这里做错了吗?

7 个答案:

答案 0 :(得分:9)

未初始化列表。所以,如果你试图解决一个对象没有初始化,它将在Null指针异常中结束你。

尝试初始化您的列表..

metadataList = new ArrayList<MyMetadata>();

答案 1 :(得分:3)

您收到NullPointerException因为没有为列表分配空间,并且添加功能无法找到指向该列表的任何指针。

在使用之前初始化列表,它将解决问题:

metadatalist = new ArrayList '<'MyMetadata'>'();

请删除上述代码中围绕'&gt;&lt;'的单引号。不知何故,如果没有它们,它就不会出现在帖子中。

答案 2 :(得分:1)

您的metadataList列表仍然未初始化,因此默认为null。您需要在向其添加任何元素之前对其进行初始化。这就是你获得NPE的原因。

List<MyMetadata> metadataList; // uninitialized
...
metadataList.add(myMetadata); // adding an element to an uninitialized will throw a NPE

像这样初始化

List<MyMetadata> metadataList = new ArrayList<>(); // initialized now, example
...
metadataList.add(myMetadata);

答案 3 :(得分:1)

您的列表未初始化...

List<MyMetadata> metadataList = new ArrayList<Metadata>();

ArrayList是List接口的一个实现,你也可以将它初始化为LinkedList,Vectors等。

有关完整列表,请阅读http://docs.oracle.com/javase/7/docs/api/java/util/List.html

答案 4 :(得分:1)

这是因为您忘记初始化List metadataList。 使用任何List实现的类初始化它 例如: 列出metadataList = new ArrayList();

快乐编码:)

答案 5 :(得分:1)

首先,您需要通过使用ArrayList初始化变量(metadataList)或其他作为您的要求来创建集合,然后您可以使用它

   List<MyMetadata> metadataList=ArrayList<MyMetadata>();
   MyMetadata myMetadata = new MyMetadata("first string", "second string");
   Log.i(this, myMetadata.toString());
   metadataList.add(myMetadata);

答案 6 :(得分:1)

metadataList.add(myMetadata);

以上一行给你一个NPE,你的上一行看起来像null.add(myMetadata) 在将对象添加到列表中之前,您必须初始化列表,例如metadataList = new ArrayList<MyMetadata>();,然后您可以执行此操作metadataList.add(myMetadata);