我可以在一行上投射和使用对象吗?

Red*_*ite 1 java syntax

通常,我做这样的事情:

public showDialog(final Object caller) {
    JDialog dialog = [ ... ]

    if (caller instanceof Window) {
        Window w = (Window) caller;
        dialog.setLocationRelativeTo(w);
        w.dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,有一种单行方式吗?基本上,像:(Window) parent.dispose();或者我是否总是需要创建一个窗口来存储我的演员?

Joa*_*uer 11

是:

dialog.setLocationRelativeTo((Window) caller);
Run Code Online (Sandbox Code Playgroud)

如果要在铸造值上调用方法,则必须将其括在一组括号中:

((Window) caller).dispose();
Run Code Online (Sandbox Code Playgroud)

我个人倒只有这样做,如果那是唯一我用它做的事情.如果有两个或多个语句需要使用强制转换的值,那么我将使用您在原始代码中完成的显式变量.