我收到用戶的崩潰報告,似乎是不可能的。 stacktrace表明一個對象爲null,並且他得到了一個nullpointerException。在完全創建對象之前可以調用對象方法嗎?
(這裏是行,如果你想看到)
public class City extends Unit {
private ArrayList<SolderType> Queue = new ArrayList<SolderType>();
public float getPrecentCompleted()
{
if(Queue.isEmpty())
{
return 0f;
}
//More code that is not relevent
}
}
它不會留下太大的解釋隊列可能是空,但隊列是在我的代碼,一個地方只能創建,這是在構造函數中。所以我不明白它是如何可以爲空。該對象在多於一個線程上共享,並且始終創建新對象。但隊列點只能在創建對象時設置。所以我不明白這是可能的。一個線程可以調用一個對象方法,而另一個線程可以創建對象,但沒有完成?
編輯增加了一些可能與問題相關的代碼。
是的,這是可能的,除非你添加了同步來防止它。 –
也許吧。但也許它應該是最終的或不穩定的。而且由於它只在創作時分配,所以應該是最終的。 –
很高興看到構造函數體以及完整的異常堆棧跟蹤。 –