私は最近、私を悩ませている問題に遭遇しました。Point2D オブジェクトの位置を別の既存の Point2D オブジェクトに設定しています。既存のポイントを新しいポイントに割り当てると、Null Pointer Exception が発生します。これをよりよく説明するために、ここに私のコードと出力があります。出力は、この最初のポイントが初期化されており、見かけのヌル ポインターの前に値を持っていることを明確に示しています。なぜこれが起こっているのか誰にも分かりますか?
コード:
private Point2D position;
public Enemy(Map map, double speed) {
if (Panel.waypoints.size() < 1) {
Panel.waypoints.add(new Waypoint(0, 0));
}
System.out.println(Panel.waypoints.get(0).getPoint());
position.setLocation(Panel.waypoints.get(0).getPoint());//this line throws the NPE
System.out.println(position);
}
コンソール:
Point2D.Double[331.0, 284.0]
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at towerdefencev2.Enemy.<init>(Enemy.java:36)
at towerdefencev2.Panel.mouseReleased(Panel.java:72)
at java.awt.Component.processMouseEvent(Component.java:6505)
ありがとう、
ニック。
編集:
ウェイポイント クラス:
int x, y;
Point2D point;
public Waypoint(int x, int y) {
this.x = x;
this.y = y;
point = new Point2D.Double(x, y);
}
Point2D getPoint() {
return point;
}