这可能是一个非常愚蠢的问题,但我继续获得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。
有人知道我在这里做错了吗?
答案 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);