2011-08-16 4 views
1

は私がするResourceBundleのいくつかのインスタンスを持っていると言う:のJava:サブクラスのResourceBundle

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

私はバンドルは、特定のキーを持っているかどうかを知りたいです。残念ながら、私が使用するすべてのメソッド(containsKey()、keySet()など)キーの親バンドルをチェックしてください。私が使用したいメソッドはhandleKeySet()です。これは保護されているため可視ではありません。この問題を回避するには、ResourceBundleのサブクラスを作成してgetKeys()を実装し、現在のバンドルのキーを削除し、親のキーを除外します。私がこの解決策を疑う部分は、恐らく継承に関する私の混乱した理解によるものです。私の質問は..これは正しい道だと思われますか?そうであれば、正しい方向へのヒントやプッシュを感謝するでしょう。

答えて

1

理論的には、継承された振る舞いを変更しないサブクラスを作成するときには、ニーズに応じてより具体的にすることで「改善」します。

たとえば、GregorianCalendarをMyGregCalに拡張して、指定した日付に対応する黄道帯記号を計算することができます。しかし、あなたはジュリアンカレンダーを計算するためにそれを変更しないでください。どうして? GregorianCalendarを受け入れるすべてのメソッドはMyGregCalを受け入れ、GregorianCalendarの機能を提供すると期待します。そうでなければ、悪いこと(悪い、予期しない悪いこと)がどこでも起こる可能性があります。

親クラスのcontractを壊さずに必要な機能を取得できない場合は、別の場所を検索する必要があります。最初からクラスを作成するか、より単純な親クラスから作成する(Properties?)

関連する問題