2016-06-22 19 views
1

Gibt es eine einfache Möglichkeit, Klasse eines primitiven Zahlentyps aus String abzurufen?Get Klasse eines primitiven Zahlentyps aus einem String

Für "42" das Verfahren würde int.class zurückkehren,

für "25.8" würde es zurückgeben float.class, etc ...

Ich brauche nur für Nummerntypen zu überprüfen, so dass das Verfahren nicht über besorgt sein Booleans und Bytes.

Ich frage, nur für den Fall, dass jemand über eine Bibliotheksmethode weiß, die diese Sache tun kann.

+1

versuchen Sie, Switch Case zu verwenden, um jeden Typ zu überprüfen, und der richtige ist Ihr Typ –

+1

Sie können eine Regex verwenden, um die Zeichenfolge zu klassifizieren. – Blobonat

+0

Diese Referenz sollte Ihnen helfen - http://stackoverflow.com/questions/180097/dynamic-find-the-class-that-represents-a-primitive-java-type – vv88

Antwort

1

Gibt es eine einfache Möglichkeit, Klasse eines primitiven Zahlentyps aus String zu erhalten?

AFAIK ... Nein, gibt es nicht.

Ein Grund ist, dass viele numerische Strings mehrere Darstellungsarten haben können; z.B. "42" könnte wie folgt dargestellt:

  • ein byte, short, int oder long,
  • ein float oder double,
  • Wrapper-Typen für die oben,
  • ein BigInteger oder ein BigDecimal, oder ...
  • a String, StringBuilder oder StringBuffer.

Und die Kehrseite ist, dass eine Zahl wie "25.8" wahrscheinlich keine präzise Darstellung in einem der Urtyp oder ihre Wrapper hat.

Wenn es (oft) keine einzige richtige Antwort gibt, ist es nicht überraschend, dass es keine allgemeine Lösung gibt, die von den Java SE-Bibliotheken oder einer der üblichen Bibliotheken von Drittanbietern bereitgestellt wird.

+0

Dank für die Antwort haben. Ich dachte schon, aber ich warte ein wenig, nur für den Fall, dass jemand eine Bibliotheksmethode kennt –

+0

Und vergessen Sie nicht die Lokalisierung (Globalisierung) Einstellungen. Manchmal gibt es unterschiedliche Dezimaltrennzeichen in verschiedenen Globalisierungseinstellungen. – Yannici