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