В коде Java можно иметь числовые литералы, которые используют суффикс для указания типа литерала, например, 1D
, 0.15F
или 5L
для double
, float
и long
соответственно. Также поддерживается шестнадцатеричное и восьмеричное представления и, возможно, некоторые другие вещи, которые я не упомянул.
Я бы хотел что-то эквивалентное синтаксическому анализатору, который используется javac
внутри, который бы возвратил Number
объектов.
NumberFormat.parse()
, как это реализовано в DecimalFormat
, похоже, создает только объекты Double
и Long
, с некоторыми проблемами, когда некоторые из упомянутых выше обозначений используются.
Существует ли в стандартной библиотеке классов синтаксический анализатор, скажем, Java 6 и выше, который способен прозрачно анализировать такие строки и возвращать правильный подкласс Number
?