簡體   English   中英

Java:嘗試將對象添加到BlockingQueue時出現NullPointerException嗎?

[英]Java: NullPointerException when trying to add object to BlockingQueue?

我發現了一個關於PriorityQueue的類似問題,該錯誤是未正確初始化。 我可能有同樣的問題,但是我不知道如何正確初始化它!

到目前為止,我只是這樣做:

BlockingQueue myQueue = null;

但這會在我嘗試向列表中添加內容時引發異常。

如何正確初始化BlockingQueue?

BlockingQueue<E>是一個接口。 您需要選擇該接口的特定實現,例如ArrayBlockingQueue<E> ,並按如下所示調用其構造函數之一:

BlockingQueue<E> myQueue = new ArrayBlockingQueue<E>(20);

如果不確定JDK中存在哪些不同類型的阻塞隊列,請查看“所有已知的實現類”下的內容

如果在null上調用任何方法,則將獲得null指針異常。 嘗試制作一個新的ArrayBlockingQueue來實現該接口。

請閱讀javadocs,其中也包含示例http://download.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingQueue.html

BlockingQueueblockingQueue =新的ArrayBlockingQueue(100); //還有其他實現,尤其是使用鏈表並且比數組更好地擴展。

  1. 使BlockingQueue保持某種類型,例如BlockingQueue<String>或類似的東西。
  2. 您需要使用BlockingQueue的實現來初始化變量,例如ArrayBlockingQueue<E>

因此,請執行以下操作:

BlockingQueue<MyObject> = new ArrayBlockingQueue<MyObject>();

你會沒事的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM