Java: создание подклассов ResourceBundle - PullRequest
1 голос
/ 17 августа 2011

Скажем, у меня есть какой-то экземпляр ResourceBundle:

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

Я хочу знать, есть ли у bundle определенный ключ. К сожалению, все методы, которые я бы использовал (containsKey (), keySet () и т. Д.) также проверяют родительский пакет на наличие ключа. Я бы хотел использовать метод handleKeySet (), который защищен, поэтому невидим. Чтобы обойти эту проблему, единственное решение, о котором я могу подумать, - это создать подкласс ResourceBundle и реализовать getKeys () таким образом, чтобы он возвращал только ключи текущего пакета и исключают ключи родителя. Часть, где я начинаю сомневаться в этом решении, вероятно, связана с моим запутанным пониманием наследования. Мой вопрос ... это правильный путь? И если да, то любые подсказки или толчок в правильном направлении приветствуются.

1 Ответ

1 голос
/ 17 августа 2011

Теоретически, когда вы создаете подкласс, вы не изменяете унаследованное поведение, а просто «улучшаете» его, делая его более специфичным для ваших нужд.

Например, вы можете расширить GregorianCalendar наMyGregCal, чтобы использовать его для вычисления знака зодиака, соответствующего данной дате.Но вам следует избегать его изменения, чтобы, скажем, рассчитать юлианский календарь.Зачем?Потому что каждый метод, который принимает GregorianCalendar, будет принимать MyGregCal, и будет ожидать, что он обеспечивает функциональность GregorianCalendar.Если этого не произойдет, то плохие вещи (хуже, неожиданные плохие вещи) могут происходить везде.

Итак, если вы не можете получить необходимую функциональность, не нарушив contract изродительский класс, вы должны искать в другом месте.Напишите класс с нуля или из более простого родительского класса (Properties?)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...