Respostas:
Eles silenciam um aviso que o Eclipse emite quando encontra literais de sequência (e foi configurado para reclamar).
A idéia é que as mensagens da interface do usuário não devem ser incorporadas como literais de seqüência de caracteres, mas sim originadas de um arquivo de recurso (para que possam ser traduzidas, revisadas, etc). Conseqüentemente, o Eclipse pode ser configurado para detectar literais de cadeia de caracteres, para que você não tenha deixado acidentalmente cadeias de UI não-externalizadas no código; no entanto, existem seqüências que não devem ser externalizadas (como regexps) e, portanto, // $ NON-NLS-1 $ fornece uma maneira de comunicar esse fato ao compilador.
A sequência não é traduzível. Diz ao editor Eclipse para não sinalizar a sequência como sem recursos. Isso é importante para aplicativos multilíngues.
NON-NLS
meios não - N acional L anguage S POIO .
Wikipedia também propõe Non - N ative L anguage S upport (NLS), mas este último não é muito utilizado.
O NLS trata da internacionalização de seu aplicativo. O Eclipse ajuda a localizar cadeias codificadas no seu código. Para indicar que uma string não faz parte da internacionalização, acrescente o comentário em //$NON-NLS-x$
que x é a posição da string. No exemplo a seguir, ambas "!"
são seqüências codificadas que não fazem parte da internacionalização:
public String foo(String key) {
return "!" + key + "!"; //$NON-NLS-1$ //$NON-NLS-2$
}
Notas:
//
é necessária cada vez$NON-NLS$
para várias strings na mesma linha //$NON-NLS-x$
)O livro EMF: Eclipse Modeling Framework na página 250 diz:
Marcadores não NLS - O compilador Java do Eclipse tem a capacidade de sinalizar cadeias não externalizadas como um aviso ou erro, a fim de facilitar a ativação do NLS (National Language Support). O código gerado pelo EMF não usa cadeias codificadas permanentemente para mensagens que o usuário verá; no entanto, literais de seqüência de caracteres aparecem com freqüência, por exemplo, como chaves para pesquisa de seqüências de caracteres externalizadas em um arquivo de propriedades. Esta propriedade controla se deve incluir comentários que marcam esses literais como não traduzíveis, para que o compilador não os sinalize.
Para obter mais detalhes, consulte também as páginas A GUI do gerador e Como internacionalizar seu plug-in do Eclipse .
Você pode ativar / desativar esse recurso. No Eclipse Neon, vá para
Project > Properties > Java Compiler > Errors/Warnings
e selecione o campo
Non-externalized strings (missing/unused $NON-NLS$ tag)
Se você é um desenvolvedor Android. Todas as strings que o usuário pode ver devem estar no arquivo de recursos /res/values/strings.xml para ler o arquivo strings.xml no código que você usa R.string. Ao adicionar a tag // $ NON-NLS- $ você está observando que a sequência não será vista pelos usuários.
O aviso no Eclipse Helios pode estar ativado em Window -> preferences -> java -> Compiler -> code style -> "Non-externalized Strings (missing/unused &NON-NLS$ tag)
.
Se você está planejando programar sua atividade para ser multilíngue, é recomendável ativar isso. E, em seguida, adicionando a tag & NON-NLS $ a cadeias internas à sua atividade. O Eclipse adicionará a tag & NON-NLS $ na correção rápida se você clicar com o botão direito do mouse no aviso ou erro.
É usado pelo Eclipse para indicar que uma sequência não precisa ser traduzida, provavelmente porque não será vista pelos usuários do aplicativo.
Ele diz ao compilador para não reclamar de uma string não externalizada e que não requer localização.