[英]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.