2008-11-25 8 views
4

Y a-t-il de bonnes raisons de ne pas utiliser \ u0000 comme délimiteur dans une chaîne Java? Je voudrais encoder et décoder la chaîne moi-même. Ceci permet d'enregistrer une liste de chaînes entrées par l'utilisateur (j'imagine que l'entrée doit être saisie?) À une préférence Eclipse et de la lire à nouveau. La liste peut être de taille variable, donc je ne pense pas que je peux enregistrer chaque élément à sa propre préférence.Null u0000 dans Java String?

Répondre

2

Il existait auparavant des bibliothèques qui traitaient par erreur les chaînes Java avec une terminaison nulle. Je ne sais pas si c'est toujours vrai, mais ça vaut la peine de garder ces choses à l'esprit. Surtout si vous interopez avec des bibliothèques externes qui géreront les chaînes comme étant terminées par un caractère nul.

+0

Merci à Jon Skeet (http://stackoverflow.com/questions/305223/jon-skeet-facts) d'avoir permis que ma réponse soit acceptée. – Dinah

1

Eh bien, il y a la possibilité que tout ce qui transforme la chaîne d'une manière ou d'une autre puisse la dépouiller. Oh, et la faible possibilité que vous pourriez vouloir garder des nulls dans l'entrée.

Qu'allez-vous en faire?

1

Si vous avez besoin de l'analyser plus tard, les fonctions d'analyse de chaîne peuvent ne pas accepter null comme valeur pour le délimiteur.

+0

a TRÈS vrai pour les applications mobiles – sandalone

2

Si les données restent dans Java, pourquoi n'utilisez-vous pas un tableau ou une liste à la place?

+0

Il va être stocké dans une préférence Eclipse, pour la persistance entre les sessions, qui accepte uniquement les chaînes et les primitives. – Albert

+0

Dans ce cas, je le sérialiserais, mais le stocker comme vous l'avez proposé fonctionne également, de cause à effet. – phihag

0

On dirait que vous essayez de l'utiliser pour stocker une liste. Pourquoi ne pas utiliser ArrayList<String>? Avoir un \u0000 dans une chaîne est mauvais. Envisagez d'utiliser un tableau d'octets. Comme vous le dites pour sauvegarder quelque chose dans les paramètres eclipse, je n'utiliserais pas de NULs intégrées, puisque les fichiers semblent lisibles par l'utilisateur (dans mon ~/.eclipse au moins). Que voulez-vous sauver? Vous pouvez chaîner les éléments ("item 2" "item 2") par exemple. Ne le compliquez pas trop.

+0

Il va être stocké dans une préférence Eclipse, pour la persistance entre les sessions, qui accepte uniquement les chaînes et les primitives. Pourquoi un tableau d'octets avec un 0 serait-il meilleur qu'un String avec \ u0000? – Albert

+0

parce que certaines fonctions peuvent ne pas s'attendre à des NUL embarqués et éventuellement les supprimer. –

+0

Il tente d'enregistrer les arguments de la ligne de commande à lire plus tard. Je pense que le délimiteur devra être quelque chose qui ne peut pas être tapé sur un clavier. – Albert