【问题标题】:Why are not some of the constant fields in java enum values?为什么java枚举值中没有一些常量字段?
【发布时间】:2015-11-23 10:35:56
【问题描述】:

关于 ScrollPane 的文档不使用枚举值作为滚动条策略(也没有任何其他类用于常量字段值),这是有原因的吗?

这些常量字段值的值是否有更深入的含义,或者它们只是按升序排列?因为在我看来,像public ScrollPane(int scrollbarDisplayPolicy) 这样的构造函数看起来不像public ScrollPane(ScrollPane.ScrollbarDisplayPolicy scrollbarDisplayPolicy) 那样有意义

或者这只是没有多个只有几个值的枚举?

【问题讨论】:

    标签: java enums constants


    【解决方案1】:

    答案很简单:enums 仅在 Java 5 中引入,而这些常量比这更早。

    不幸的是,没有办法在不破坏代码兼容性的情况下改造 API。 (一般来说,为新功能改造 API 听起来是一项不可能完成的任务,但在 Java 5 中引入泛型就是一个可行的例子。)

    【讨论】:

    • 您知道他们是在引入枚举后添加的类中使用枚举还是仍然坚持旧方式?
    • @Marcono1234 不,据我所知,他们坚持使用旧方式,例如here。但在 JavaFX 等全新的 API 中,枚举非常普遍。
    【解决方案2】:

    Java enum 是在 1.5 版中引入的。

    所以大多数在 java 1.5 之前开发的库都使用 static final 常量。

    例如,log4j levels 也是整数值的公共静态最终值。

    【讨论】:

    • java.util.logging,在 1.4 中引入,使用 Java 5 之前的类型安全枚举类习语。
    猜你喜欢
    • 2019-06-21
    • 1970-01-01
    • 2013-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多