我收到用户的崩溃报告,似乎是不可能的。 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
}
}
它不会留下太大的解释队列可能是空,但队列是在我的代码,一个地方只能创建,这是在构造函数中。所以我不明白它是如何可以为空。该对象在多于一个线程上共享,并且始终创建新对象。但队列点只能在创建对象时设置。所以我不明白这是可能的。一个线程可以调用一个对象方法,而另一个线程可以创建对象,但没有完成?
编辑增加了一些可能与问题相关的代码。
是的,这是可能的,除非你添加了同步来防止它。 –
也许吧。但也许它应该是最终的或不稳定的。而且由于它只在创作时分配,所以应该是最终的。 –
很高兴看到构造函数体以及完整的异常堆栈跟踪。 –