【问题标题】:Is ResourceBundleControlProvider virtually deprecated in Java?ResourceBundleControlProvider 在 Java 中实际上已被弃用吗?
【发布时间】:2017-03-07 08:01:13
【问题描述】:

ResourceBundleControlProvider 的官方Oracle documentation 说:

必须使用Java Extension Mechanism 将提供程序实现打包为已安装的扩展。 ...

自:1.8

但是,当您点击提到的Java Extension Mechanism 链接时,它会显示:

此功能已被弃用,将在未来的版本中删除。

这是否意味着 ResourceBundleControlProvider 接口已被引入 Java 1.8 并已弃用?我们应该开始使用它吗?为什么会在那里?

它似乎被错误地引入了 Java 8,正如Deprecate ResourceBundleControlProvider for removal Open JDK bug 所暗示的那样:

这个接口是在 JDK 8 (JDK-6380549) 中引入的,它使用 Java 扩展机制(现在在 JDK 9 中已过时)用提供的控件替换默认控件提供了一种方便的方法。此功能的原始请求者确认他们没有使用过这个 API。事实证明,据我们所知,该界面似乎没有用户。在JDK 9 中添加@Deprecated 标记和forRemoval=true,并在JDK 10 中删除接口可能是合适的。

界面看起来像一个死胎,它的使用方式非常奇怪和不切实际。

【问题讨论】:

    标签: java java-8 deprecated resourcebundle


    【解决方案1】:

    看起来该功能在 JDK 9 中将被弃用,至少如果来自 http://hg.openjdk.java.net/jdk9/jdk9/jdk/rev/760e51207cb0 的代码将成为 Java 9 版本的一部分:

    * @deprecated There is no longer any mechanism to install a custom
    * {@code ResourceBundleControlProvider} implementation defined
    * by the platform class loader or its ancestor. The recommended
    * way to use a custom {@code Control} implementation to load resource bundle
    * is to use {@link java.util.ResourceBundle#getBundle(String, Control)}
    * or other factory methods that take custom {@link java.util.ResourceBundle.Control}.
    */
    @Deprecated(since="9", forRemoval=true)
    public interface ResourceBundleControlProvider {
    

    【讨论】:

      【解决方案2】:

      建议弃用 ResourceBundleControlProvider,但已通过 JDK-8172365 [1] 对其进行了重新检查,以便为使用此 API 的代码找到更好的迁移路径。它不再被弃用。如果您下载更新的版本,您会看到这一点。

      [1]https://bugs.openjdk.java.net/browse/JDK-8172365

      【讨论】:

      • 好吧,但 扩展机制 已被弃用,它必须 用作文档状态...
      猜你喜欢
      • 2021-02-21
      • 1970-01-01
      • 2022-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-04
      • 2018-12-12
      • 2014-09-18
      相关资源
      最近更新 更多