【问题标题】:Java: Subclassing ResourceBundleJava:子类化 ResourceBundle
【发布时间】:2011-08-16 23:08:51
【问题描述】:

假设我有一些 ResourceBundle 实例:

ResourceBundle bundle = getBundle();
... 
    some more code that does stuff with bundle
...

我想知道 bundle 是否有特定的键。不幸的是,我将使用的所有方法(containsKey()、keySet() 等)检查父包中的密钥。我想使用的方法是 handleKeySet(),它是受保护的,因此不可见。为了解决这个问题,我能想到的唯一解决方案是创建 ResourceBundle 的子类并实现 getKeys() 以便它只返回当前捆绑包的键并排除父级的键。我开始怀疑此解决方案的部分可能是由于我对继承的理解混乱。我的问题是..这似乎是正确的方法吗?如果是这样,任何提示或朝着正确方向的推动将不胜感激。

【问题讨论】:

    标签: java inheritance subclassing resourcebundle


    【解决方案1】:

    理论上,当您创建一个子类时,您不会更改继承的行为,您所做的是通过使其更具体地满足您的需求来“改进”它。

    例如,您可以将 GregorianCalendar 扩展到 MyGregCal 中,以便使用它来计算与给定日期对应的黄道十二宫。但是你应该避免为了计算儒略历而改变它。为什么?因为每个接受 GregorianCalendar 的方法都会接受 MyGregCal,并期望它提供 GregorianCalendar 的功能。如果没有,那么坏事(更糟糕的是,意外坏事)可能随处发生。

    因此,如果您在不破坏父类的contract 的情况下无法获得所需的功能,则应该寻找其他地方。从头开始编写类,或者从更简单的父类 (Properties?)

    【讨论】:

      猜你喜欢
      • 2013-08-31
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 2017-03-22
      • 2016-06-15
      • 2012-08-17
      • 2012-06-02
      • 1970-01-01
      相关资源
      最近更新 更多