当我调用add方法时,我继续获取空指针异常,代码看起来很好,但我不知道出了什么问题。
public class CarRunner {
public static void main(String[] args) {
TrafficLight light = new TrafficLight();
RoadRunnable run1 = new RoadRunnable(1,light);
String car="car";
for (int i =0;i<100;i++)
{
car="car"+i;
run1.add(car);
}
Thread traffic1 = new Thread(run1);
traffic1.start();
}
}
public class RoadRunnable implements Runnable{
private LinkedList<String> queue;
private int number;
private TrafficLight light;
public RoadRunnable(int roadNumber, TrafficLight aLight)
{
number = roadNumber;
light = aLight;
}
public void add(String car)
{
queue.add(car);
}
}
答案 0 :(得分:2)
您的queue
未实例化。在构造函数中,您可能希望这样做:
queue = new LinkedList<String>();
答案 1 :(得分:0)
当您尝试访问空对象方法或参数时,会发生空指针异常。在您的代码中,您尚未初始化队列:
private LinkedList<String> queue
因此在尝试使用queue.add(car);
类的add方法中的RoadRunnable
添加队列中的元素时会遇到Null指针异常。
您应该在声明或构造函数中初始化队列,例如:
public RoadRunnable(int roadNumber, TrafficLight aLight)
{
// queue initilization
queue = new LinkedList<String>();
number = roadNumber;
light = aLight;
}
答案 2 :(得分:0)
RoadRunnable类中的任何内容都没有为队列变量创建指向的实际LinkedList;因此,队列为空,当您尝试使用它时,您将获得NPE。
答案 3 :(得分:0)
您没有初始化队列。
private LinkedList<String> queue = new LinkedList<String>();
而不是
private LinkedList<String> queue;
初始化LinkedList
的参考