【问题标题】:How is a static constant useful in an anonymous class?静态常量在匿名类中有何用处?
【发布时间】:2020-09-02 13:39:07
【问题描述】:

匿名类的documentation 声明:

匿名类对其成员也有与本地类相同的限制:

  • 您不能在匿名类中声明静态初始化程序或成员接口。
  • 匿名类可以有静态成员,前提是它们是常量变量。

我不明白匿名类中的 static 常量在实践中如何有用。静态方法不能被覆盖,我们不能从外部访问匿名类的成员,因此我们不需要使用静态常量。

我是否遗漏了某些东西,或者它在任何方面都不实用,但无论如何都是允许的?

【问题讨论】:

    标签: java static anonymous-types


    【解决方案1】:

    你不见了:

    1. 命名常量为需要维护代码的程序员提供了清晰的思路。

    2. 命名常量允许它在匿名类代码中的多个位置使用,使其更容易在以后更改而不会丢失任何位置。

    这实际上与在任何其他类中使用 private 常量没有什么不同。

    【讨论】:

    • 我想你误解了我的意思。我试图理解为什么它会是“静态的”。
    • @somMelon Java 将 常量字段 定义为 static final 字段。 --- 虽然从技术上讲,根据JLS 4.12.4,常量变量不需要是static;但由于 field 的值无论实例如何都将始终相同,因此具有非静态常量没有意义,因此 JLS 的其余部分将 constant field 视为作为static final 字段。
    • 但是在匿名类的上下文中,将其设为静态是否有意义?
    • @somMelon 将 constant 设为静态总是有意义的,即不要用非实例特定的值浪费实例特定的内存。
    • 很好,我记得不同。所以你的答案是正确的,这是正确的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2017-04-11
    • 2016-07-19
    • 2015-12-25
    • 2011-01-28
    • 1970-01-01
    相关资源
    最近更新 更多