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
字段。