8
votes

Analysant des objets de string en java

J'essaie d'écrire une méthode générale pour analyser les objets des chaînes. Pour être clair, j'ai la mise en œuvre non so-élégante suivante: xxx

existe-t-il un meilleur moyen de mettre en œuvre cela?


1 commentaires

Veuillez ajouter le contexte dans lequel vous souhaitez utiliser la méthode. Cela aiderait à donner une solution appropriée.


6 Réponses :


8
votes

Je ne suis pas sûr de ce que vous essayez de faire. Voici quelques suppositions différentes:

  • Vous voulez être capable de convertir un objet à une chaîne et inversement.

    Vous devriez examiner la sérialisation. J'utilise Xstream , mais WriteObject et java.beans.xmlencoder fonctionne également.

    • L'utilisateur entre du texte et vous souhaitez le contraindre au type "Droite", dont il y en a beaucoup.

      généralement, cela signifie un problème avec la spécification de l'utilisateur. Qu'avez-vous de l'utilisateur et pourquoi pourriez-vous être autant de types différents?

      En général, vous voudrez que le type soit aussi large que possible: utilisez double s'il s'agit d'un numéro et chaîne pour presque tout le reste. Puis construisez d'autres choses à partir de cette variable. Mais ne passez pas dans le type: Habituellement, le type doit être très évident.


1 commentaires

+1 - Je soupçonne que l'OP essaie de résoudre le mauvais problème.



1
votes

Numberutils.Createnumber ( str) (de Apache Commons-Lang)

Il décide du type de numéro à créer, de sorte que vous ne passez pas la classe.


0 commentaires

3
votes

Que diriez-vous d'énums? XXX


1 commentaires

Dunno; +1 pour le jeton de type. Il pourrait également être intéressant de retourner numéro et de spécifier un type wildcard limité, classe .



0
votes

Si ce sont vos seuls types d'exemples, vous pouvez également faire quelque chose comme: xxx

Plus d'informations peut fournir de meilleures réponses. Je serais très surpris s'il n'y a pas déjà un code d'utilité qui réponde à vos spécifications. Il existe quelques façons de résoudre ce problème en fonction des exigences réelles.


0 commentaires

0
votes

Pour convertir d'un objet (ici une chaîne) à une autre, vous pouvez utiliser transorphe :

Transmorph transmorph = new Transmorph(new DefaultConverters());
float myFloat = transmorph.convert("55.2",Float.TYPE);

long[] longsArray = transmorph.convert(new Integer[] { 1, 2, 3, 4 }, long[].class);


0 commentaires

14
votes

Votre méthode peut avoir une seule ligne de code: xxx pré>

essai avec différentes classes: p> xxx pré>

la sortie: p >

Obj: 123; type: Integer
Obj: str; type: String
Obj: 123; type: BigDecimal
Obj: java.text.SimpleDateFormat@38d640; type: SimpleDateFormat


1 commentaires

+1 allait suggérer à peu près la même chose. Ils ont tous un constructeur en train de prendre une corde.