83 votes

(Chaîne de caractères) ou .toString()?

En fait, cette question n'a pas grand sens, je suppose.

La situation est la suivante: j'ai une méthode à un Objet "o" paramètre.

Dans cette méthode, j'ai exactement le savez il y a une chaîne de caractères en "o", ce qui n'est pas null. Il n'est pas nécessaire de vérifier, ou de faire autre chose. - Je le traiter exactement comme un String objet.

Juste curieux, ce qui est moins cher - jette - String, ou utiliser Object.toString()? Ou est-ce même par temps/cpu/mem - prix?

Mise à jour: Cette méthode accepte un "Objet" en raison de la mise en œuvre d'une interface. Il n'y a aucun moyen de modifier le type de paramètre.

Et il ne peut pas être null. Je voulais juste dire que je n'ai pas besoin de le vérifier pour la valeur null ou vide. Dans mon cas, il y a toujours une chaîne non vide.

67voto

euphoria83 Points 3678

casting pour une Chaîne de caractères est moins cher car qui ne nécessite pas une fonction externe appel, il suffit interne de vérification de type.

45voto

Jon Skeet Points 692016

Je voudrais utiliser un cast. Qui valide votre "savoir" que c'est une chaîne. Si, pour quelque raison que ce soit, vous vous retrouvez avec un bug et que quelqu'un passe dans autre chose qu'une chaîne de caractères, je pense qu'il serait mieux de lever une exception (qui a un plâtre) que de continuer à exécuter avec des données erronées.

34voto

cletus Points 276888

Selon l' Idiot de la performance de réflexions: x.toString() vs (String)x

Dans thend fin, les résultats sont étonnamment claire: c'est au moins deux fois plus vite de cast de l'Objet String que d'appeler Objet.toString()

7voto

Andy White Points 36586

Si vous connaissez l'Objet o est une Chaîne, je dirais juste la convertir en une Chaîne de caractères et l'appliquer de cette façon. L'appel à toString() sur un objet que vous savez pour sûr, c'est une Chaîne de caractères peut seulement ajouter de la confusion.

Si l'Objet o peut-être rien d'autre qu'une Chaîne de caractères, vous aurez besoin d'appeler toString().

3voto

Henrik Paul Points 22787

Je ne voudrais pas être trop préoccupés par la performance, si cette opération se fait même quelques milliers de fois par seconde - il n'y a pas de différence tangible.

Je voudrais, toutefois, être intéressés de "savoir" à l'entrée. Vous avez une méthode qui accepte un Object et vous devez le traiter comme tel, c'est à dire que vous ne devriez pas savoir quelque chose au sujet de ce paramètre, les autres qu'il adhère à l' Object interface, qui arrive à avoir un toString() méthode. Dans ce cas, je suggère fortement à l'aide de cette méthode à la place de seulement présumer de quoi que ce soit.

Otoh, que, si l'entrée est toujours soit en String ou null, il suffit de changer la méthode d'accepter Strings, et de vérifier explicitement pour nulls (ce que vous devriez faire de toute façon à chaque fois que le domaine de la non-primitives...)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X