【发布时间】:2013-04-19 19:46:13
【问题描述】:
我想使用匿名内部类来处理程序中对象的鼠标操作。但是,根据参数,我希望内部类的行为有所不同。例如:
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) 为空。我想知道这种方法在Java中是否可行。
【问题讨论】:
-
如果 c 为空,这里不会抛出异常;错误发生在哪一行?
-
有人将它传递给 rectangleBuilder() 时是否为空?听起来这就是问题所在......
-
恐怕
c确实是null;它与这种方法完全无关,因为它只影响r = new Rectangle (100, 100, c);行 -
是的,如果变量是最终的,则可以传递变量!看来您正在将 null 作为参数传递给该方法。
-
当我在内部类中放置一个断点时,我发现 c 为空。这意味着决定如何设置位置的逻辑不起作用。当它传递给 rectangleBuilder 时,它绝对不为空。
标签: java anonymous-inner-class