Im Eclipse-Quellcode habe ich einige '$NON-NLS-1$' in Kommentaren gefunden, die so verwendet werden:
private String toolTip = ""; //$NON-NLS-1$
Was soll das bedeuten?
Im Eclipse-Quellcode habe ich einige '$NON-NLS-1$' in Kommentaren gefunden, die so verwendet werden:
private String toolTip = ""; //$NON-NLS-1$
Was soll das bedeuten?
Sie bringen eine Warnung zum Schweigen, die Eclipse ausgibt, wenn es auf Stringliterale stößt (und so konfiguriert wurde, dass es sich beschwert).
Die Idee ist, dass UI-Meldungen nicht als Stringliterale eingebettet werden, sondern aus einer Ressourcendatei stammen sollten (damit sie übersetzt, geprüft usw. werden können). Folglich kann Eclipse so konfiguriert werden, dass es String-Literale erkennt, so dass Sie nicht versehentlich nicht externalisierte UI-Strings im Code hinterlassen. Es gibt jedoch Strings, die nicht externalisiert werden sollten (wie z. B. Regexps), und //$NON-NLS-1$ gibt Ihnen eine Möglichkeit, diese Tatsache dem Compiler mitzuteilen.
NON-NLS
bedeutet Nicht - N ational L anguage S ünterstützung .
Wikipedia schlägt auch vor Nicht - N ativ L anguage S ünterstützung (NLS), aber letztere wird nicht sehr häufig verwendet.
NLS geht es um die Internationalisierung Ihrer Bewerbung. Eclipse hilft Ihnen dabei, hart kodierte Strings in Ihrem Code zu finden. Um anzuzeigen, dass eine Zeichenkette nicht Teil der Internationalisierung ist, fügen Sie den Kommentar //$NON-NLS-x$
wobei x die Position der Zeichenkette ist. Im folgenden Beispiel sind beide "!"
sind fest kodierte Zeichenketten, die nicht Teil der Internationalisierung sind:
public String foo(String key) {
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
}
Anmerkungen:
//
ist jedes Mal erforderlich, wenn$NON-NLS$
für mehrere Zeichenfolgen in derselben Zeile//$NON-NLS-x$
)Das Buch EMF: Eclipse Modeling Framework auf Seite 250 sagt:
Nicht-NLS Marker- Der Java-Compiler von Eclipse ist in der Lage, nicht-externalisierte Strings als Warnung oder Fehler zu kennzeichnen, um die Aktivierung des National Language Support (NLS) zu erleichtern. EMF-generierter Code verwendet keine fest kodierten Strings für Meldungen, die der Benutzer sieht; String-Literale kommen jedoch häufig vor, zum Beispiel als Schlüssel für die Suche nach externalisierten Strings in einer Eigenschaftsdatei. Diese Eigenschaft steuert, ob Kommentare eingefügt werden sollen, die diese Literale als nicht übersetzbar kennzeichnen, so dass der Compiler sie nicht markiert.
Für weitere Einzelheiten siehe auch die Seiten Die GUI des Generators et Wie Sie Ihr Eclipse Plug-In internationalisieren .
Sie können diese Funktion aktivieren/deaktivieren. Gehen Sie bei Eclipse Neon zu
Project > Properties > Java Compiler > Errors/Warnings
und wählen Sie das Feld
Non-externalized strings (missing/unused $NON-NLS$ tag)
Wenn Sie ein Android-Entwickler sind. Alle Strings, die der Benutzer sehen kann, sollten sich in der Ressourcendatei /res/values/strings.xml befinden, um die Datei strings.xml im Code zu lesen, in dem Sie R.string. verwenden. Durch das Hinzufügen des Tags //$NON-NLS-$ weisen Sie darauf hin, dass die Zeichenkette von den Benutzern nicht gesehen werden kann.
Die Warnung in Eclipse Helios kann eingeschaltet werden unter Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
.
Wenn Sie planen, Ihre Aktivität mehrsprachig zu programmieren, empfiehlt es sich, diese Option zu aktivieren. Und dann fügen Sie das &NON-NLS$-Tag zu Strings hinzu, die intern zu Ihrer Aktivität gehören. Eclipse fügt den &NON-NLS$-Tag im Quick-Fix hinzu, wenn Sie mit der rechten Maustaste auf die Warnung oder den Fehler klicken.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.