通常情况下,我会这样做:
public showDialog(final Object caller) {
JDialog dialog = [ ... ]
if (caller instanceof Window) {
Window w = (Window) caller;
dialog.setLocationRelativeTo(w);
w.dispose();
}
}
但是,有一种单行方式吗?基本上,像:(Window) parent.dispose();
或者我是否总是需要创建一个窗口来存储我的演员?
答案 0 :(得分:11)
是:
dialog.setLocationRelativeTo((Window) caller);
如果要在铸造值上调用方法,则必须将其括在一组括号中:
((Window) caller).dispose();
我个人只会这样做,如果那是唯一的我用它做的事情。如果有两个或多个语句需要使用强制转换的值,那么我将使用您在原始代码中完成的显式变量。
答案 1 :(得分:3)
是的,只需将演员表包装在另一组括号中:
((Window) parent).dispose();
虽然不是特别漂亮。
或者我是否总是需要创建一个窗口来存储我的演员?
请注意,您未创建Window
- 您正在创建对已有Window
的引用(这非常便宜)。
答案 2 :(得分:3)
你可以写
if (caller instanceof Window) {
dialog.setLocationRelativeTo((Window) caller);
((Window) caller).dispose();
}
我建议你做更清楚的事情,不要过多担心行数。
答案 3 :(得分:1)
当然可以。你的3行将成为:
dialog.setLocationRelativeTo((Window) caller);
((Window) caller).dispose();
答案 4 :(得分:1)
为清楚起见,我经常采用略有不同的方式
dialog.setLocationRelativeTo(Window.class.cast(caller));
Window.class.cast(caller).dispose();
我想明确告诉读者你在做什么。虽然()演员语法是众所周知的,但我认为习语依赖于特定的java知识。