匿名の内部クラスを使用して、プログラム内のオブジェクトに対するマウス アクションを処理したいと考えています。ただし、パラメーターによっては、内部クラスの動作が異なるようにしたいと考えています。例えば:
Rectangle r1 = rectangleBuilder (Color.Red);
Rectangle r2 = rectangleBuilder (Color.Blue);
public Rectangle rectangleBuilder (final Color c) {
r = new Rectangle (100, 100, c);
r.dragListener = new DragListener () {
@Override
public void drag (double x, double y) {
if (c == Color.Red) {
r.setPosition (x, y);
}
if (c == Color.Blue) {
r.setPosition (2 *x, 2 *y);
}
}
}
return r;
}
アイデアは、オブジェクトを作成するときに、ドラッグしたときの動作がその色によって決定されるということです。これは正常に機能していましたが、何らかの理由で c (Color) が null であるという例外が発生しています。この種のアプローチがJavaで可能かどうか疑問に思っています。