WindowConstants的定义如下:

public interface WindowConstants
{
    public static final int DO_NOTHING_ON_CLOSE = 0;

    public static final int HIDE_ON_CLOSE = 1;

    public static final int DISPOSE_ON_CLOSE = 2;

    public static final int EXIT_ON_CLOSE = 3;

}
JFrame的定义如下:
public class JFrame  extends Frame implements WindowConstants,
                                              Accessible,
                                              RootPaneContainer,
                              TransferHandler.HasGetTransferHandler
{
    /**
     * The exit application default window close operation. If a window
     * has this set as the close operation and is closed in an applet,
     * a <code>SecurityException</code> may be thrown.
     * It is recommended you only use this in an application.
     * <p>
     * @since 1.3
     */
    public static final int EXIT_ON_CLOSE = 3;

为什么要重新定义EXIT_ON_CLOSE?并且由于它是final接口中的WindowConstants,如何重新定义它?

最佳答案

在Java 1.3中,添加了所有这些内容后,EXIT_ON_CLOSE仅与JFrame相关,而与WindowConstants的其他实现无关。因此,它在WindowConstants中不存在,并在JFrame中定义。该接口中还有其他3个XXX_ON_CLOSE选项。 (英语Javadoc不再在线,尽管仍然可以下载,所以这里没有参考。如果搜索“WindowConstants Java 1.3”,您将获得日语版的Javadoc-但由于页面结构相同,因此您仍然可以看到点)

后来(1.4)移至WindowConstants,但是由于兼容性问题,该字段未从JFrame中删除。

那里没有重新定义。发生了什么事shadowing。即JFrame字段隐藏(但不消除)WindowConstants字段。

09-04 08:03