繁体   English   中英

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

[英]How to add an object to a Java List?

这可能是一个非常愚蠢的问题,但是我一直在获取NullPointer。

在我的Android应用程序中,我有一个名为MyMetadata的类,并且我想使用此类的对象来填充列表。 因此,我尝试如下进行操作:

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。

有人知道我在做什么错吗?

尚未初始化列表 因此,如果不进行初始化(如果您尝试使用某个对象),它将最终导致Null指针异常。

尝试初始化您的列表。

metadataList = new ArrayList<MyMetadata>();

您将收到NullPointerException因为没有空间分配给列表,并且add函数无法找到指向该指针的任何指针。

在使用列表之前对其进行初始化,它将解决此问题:

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

请删除上面代码中“> <”周围的单引号。 不知何故,如果没有他们,它就不会出现在帖子中。

您的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);

您的清单尚未初始化...

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

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

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

发生这种情况是因为您忘记了初始化List metadataList。 用任何List实现的类Ex初始化它:List metadataList = new ArrayList();

快乐的编码:)

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

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

上一行向您抛出NPE,上一行看起来像null.add(myMetadata)然后再将对象添加到列表中,您必须初始化列表,例如metadataList = new ArrayList<MyMetadata>(); 那么您可以执行此metadataList.add(myMetadata);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM