Ответы:
Они заставляют замолчать предупреждение, которое Eclipse выдает, когда встречает строковые литералы (и было настроено жаловаться).
Идея состоит в том, что сообщения пользовательского интерфейса не должны быть встроены в виде строковых литералов, а должны быть получены из файла ресурсов (чтобы их можно было переводить, проверять и т. Д.). Следовательно, Eclipse может быть настроен на обнаружение строковых литералов, чтобы вы случайно не оставили в коде неинтернализованные строки пользовательского интерфейса; однако есть строки, которые не должны быть выведены из внешнего вида (например, регулярные выражения), поэтому // $ NON-NLS-1 $ дает возможность сообщить об этом факте компилятору.
NON-NLS
средство Номер - N АЦИОНАЛЬНОГО L anguage S оддержка .
Википедия предлагает также Non - N ческих L anguage S оддержки (NLS) , но этот последний не очень используются.
NLS - это интернационализация вашего приложения. Eclipse поможет найти жестко запрограммированные строки в вашем коде. Чтобы указать, что строка не является частью интернационализации, добавьте комментарий, //$NON-NLS-x$
где x - это позиция строки. В следующем примере оба "!"
являются жестко закодированными строками, не являющимися частью интернационализации:
public String foo(String key) {
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
}
Ноты:
//
необходим каждый раз$NON-NLS$
для нескольких строк в одной строке //$NON-NLS-x$
)Книга EMF: Eclipse Modeling Framework на странице 250 гласит:
Не-NLS-маркеры . Java-компилятор Eclipse имеет возможность пометить неэкстернализованные строки как предупреждение или ошибку, чтобы облегчить поддержку поддержки национальных языков (NLS). Сгенерированный EMF код не использует жестко закодированные строки для сообщений, которые увидит пользователь; однако строковые литералы часто появляются, например, как ключи для поиска внешних строк в файле свойств. Это свойство определяет, следует ли включать комментарии, помечающие эти литералы как непереводимые, чтобы компилятор не отмечал их.
Для получения дополнительной информации см. Также страницы «Графический интерфейс генератора» и « Как интернационализировать ваш подключаемый модуль Eclipse» .
Вы можете включить / отключить эту функцию. На Eclipse Neon зайдите
Project > Properties > Java Compiler > Errors/Warnings
и выберите поле
Non-externalized strings (missing/unused $NON-NLS$ tag)
Если вы разработчик Android. Все строки, которые может видеть пользователь, должны находиться в файле ресурсов /res/values/strings.xml для чтения файла strings.xml в коде, который вы используете R.string. Добавив тег // $ NON-NLS- $, вы получите отмечая, что строка не будет видна пользователям.
Предупреждение в Eclipse Helios может быть включено в Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
.
Если вы планируете программировать свою деятельность на несколько языков, рекомендуется включить ее. А затем добавьте тег & NON-NLS $ к строкам, которые являются внутренними для вашей деятельности. Eclipse добавит тег & NON-NLS $ в быстрое исправление, если щелкнуть правой кнопкой мыши предупреждение или ошибку.
Он используется Eclipse для указания того, что строку не нужно переводить, возможно потому, что ее не увидят пользователи приложения.
Он говорит компилятору не жаловаться на неэкстернализованную строку и не требует локализации.