2010-10-16 10 views
16

Mon code lance une exception NullPointerException, même si l'objet semble exister correctement.Java NullPointerException lors de l'ajout à ArrayList?

public class IrregularPolygon { 

    private ArrayList<Point2D.Double> myPolygon; 

    public void add(Point2D.Double aPoint) { 
     System.out.println(aPoint); // Outputs Point2D.Double[20.0, 10.0] 
     myPolygon.add(aPoint); // NullPointerException gets thrown here 
    } 
} 

// Everything below this line is called by main() 

    IrregularPolygon poly = new IrregularPolygon(); 
    Point2D.Double a = new Point2D.Double(20,10); 
    poly.add(a); 

Pourquoi cela se produit-il?

Répondre

43

sur la base des parties du code que vous avez fournies, il semble que vous ne l'avez pas initialisé myPolygon

13
private ArrayList<Point2D.Double> myPolygon = new ArrayList<Point2D.Double>(); 
8

Assurez-vous initialisez la liste:

private List<Point2D.Double> myPolygon = new ArrayList<Point2D.Double>(); 

Notez également qu'il est préférable de définissez myPolygon en tant que liste (interface) et non ArrayList (implémentation).

+0

Est-ce encore vrai? Je ne pense pas, parce que si vous l'initialisez comme un 'ArrayList' alors vous n'avez plus besoin de spécifier un type de l'autre côté de l'argument. – Ajay