【问题标题】:Why JFrame.EXIT_ON_CLOSE vs EXIT_ON_CLOSE?为什么 JFrame.EXIT_ON_CLOSE 与 EXIT_ON_CLOSE?
【发布时间】:2015-08-15 08:46:40
【问题描述】:

在我遇到的几乎所有代码示例中,派生自JFrame 的类中方法setDefaultCloseOperation 的参数是一些常量,例如JFrame.EXIT_ON_CLOSE. 在这种情况下,因为EXIT_ON_CLOSE 是@ 的常量987654325@,可以直接访问,不需要getter方法访问。为什么我们仍然在它前面加上超类名称JFrame?任何 Swing 类都是 JFrame 的子类,并且会继承 EXIT_ON_CLOSE 常量,所以为什么不将方法调用写成 setDefaultCloseOperation(EXIT_ON_CLOSE) 而不是setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)?

显式的超类名称真的有必要吗?

【问题讨论】:

  • 1) 不要扩展 JFrame,在 99.9% 的情况下尽可能使用实例。 2) 一个更有趣的问题是“JFrame.EXIT_ON_CLOSE vs JFrame.DISPOSE_ON_CLOSE”,我会为后者大声疾呼。

标签: java swing methods


【解决方案1】:

EXIT_ON_CLOSE 是 JFrame 类的静态成员,这意味着它在 JFrame 类的所有实例中都是相同的。

为什么要指定类?

因为如果您在子类中有 EXIT_ON_CLOSE 变量怎么办?将改为使用该变量。因此,要获得静态变量的正确 int 值(在这种情况下),您必须说明该变量定义在哪个类中。

这类似于您在为类的实例寻址类变量时说this.variable 的原因。在这里,我们只是说类名 JFrame 而不是 this,因为变量在所有实例中都是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-24
    • 2015-02-17
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多