簡體   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