奇怪的例外

时间:2011-06-06 12:07:36

标签: java nullpointerexception

嘿伙计们,我们正在尝试为我们的学期项目制作一个客户端 - 服务器赛车游戏,但我们有一些奇怪的错误

public void updatePosition(int id, ArrayList<Point2D.Float> positions){
    if(id==1){
        for (int i = 1; i < game.getS().getVehicles().size(); i++)
        {
            game.getS().getVehicles().get(i).updatePosition(positions.get(i));              
        }

    }else if(id==2){
        game.getS().getVehicles().get(1).updatePosition(positions.get(0));              
        for (int i = 2; i < game.getS().getVehicles().size(); i++)
        {
            game.getS().getVehicles().get(i).updatePosition(positions.get(i));  
        }

这是我们的代码

并且异常在这个确切的行中:     。game.getS()getVehicles()得到(1).updatePosition(positions.get(0));

2 个答案:

答案 0 :(得分:4)

默认情况下,引用初始化为null。如果创建集合或数组,并且无法初始化引用,则默认情况下它们将为null。

答案 1 :(得分:1)

NullPointerException可以在这个小代码段中的许多地方出现。

基本上,当您的表达式为a.b().c()时,如果NullPointerExceptiona,或null返回{b(),则可以抛出null {1}}。

如果您不确定此类表达式的所有部分都不为null,则必须执行显式检查:

if (a != null) {
  WhateverObject intermediate = a.b();

  if (intermediate != null) {
    intermediate.c(); 
  }
}