В моем java-проекте у меня есть несколько строк, вынесенных в файл messages.properties. В соответствующем файле Messages.java у меня было такое же количество общедоступных статических атрибутов типа String, поэтому я мог получить доступ к этим внешним текстам.
Затем я реализовал метод под названием getString, который получает имя константы в качестве аргумента и возвращает требуемый текст. Таким образом, нет необходимости объявлять все общедоступные статические атрибуты типа Strings внутри файла Messages.java.
Но после этого мой журнал заполнился сообщениями "Неиспользуемое сообщение NLS".
Знаете ли вы, есть ли способ предотвратить регистрацию этих предупреждающих сообщений?
Заранее спасибо.




Сообщения звучат как класс, который вы написали, потому что я не вижу его в моей документации JDK 6.
Похоже, вы пытались заново изобрести java.util.ResourceBundle. Я бы рекомендовал использовать это вместо этого и отказаться от вашего класса. У него будет дополнительное преимущество - правильная обработка I18N.
Я не вижу смысла в жестком кодировании публичных статических ключей сообщений в классе. Это просто еще одна вещь, которую вам придется поддерживать. Если я правильно понимаю, что вы делаете, я бы выбросил ваши сообщения и вместо этого использовал ResourceBundle.
Я даже не вижу в этом необходимости, но тогда я не уверен, что действительно понимаю требования здесь.
Ваш класс Messages - похоже, он расширяет org.eclipse.osgi.util.NLS.
Если это так, он предназначен для выполнения требований:
то есть NLS заполняет значение Message.staticVariable значением staticVariable, найденным в messages.properties.
Журнал предупреждений предоставляет информацию о несоответствии между Messages.java и файлом messages.properties.
Ваш метод getString() звучит так, как будто он не использует никаких преимуществ NLS, поэтому, как предлагали другие, вам может быть лучше использовать ResourceBundle.
Спасибо, джамеш, я не знал о NLS. Ваш ответ был лучше моего. Я должен это изучить.
Этот комментарий сделал мою ночь. Спасибо.
Duffymo, как сказал джамеш, Messages - это класс, который я написал, и он расширяет org.eclipse.osgi.util.NLS. Он имеет частный статический атрибут и его тип ... ResourceBundle!
джамеш, спасибо за подробное описание работы NLS.
Основываясь на ваших ответах, я удалил свой класс Messages из своего проекта и добавил атрибут типа ResourceBundle для классов, которым необходимо использовать внешние строки. Кроме того, я сделал это так, что строки, обращающиеся к внешним строкам, не нуждались в изменении.
Количество файлов в нашем проекте было уменьшено, код остался таким же чистым, как и раньше, и больше нет предупреждений в журналах.
Спасибо вам, ребята. Ты жжешь.
В дополнение к вашему сообщению, если он теперь получил MyClass.AddLog () в 5000 строках, возможно, ему следует просто обернуть вызов ResourceBundle в метод «AddLog» внутри класса сообщений.