Я часто встречал вопросы, такие как Java Generics and adding numbers together, и ответ обычно сводится к тому, что вы действительно ничего не можете сделать с Number
.Какова цель класса Number?
Sourcecode показывает, что Number
в основном представляет собой пустую оболочку, в отличие от примера Object.
На данный момент я не могу представить себе ситуацию, когда использование Number
вместо конкретного подтипа имеет значительные (если есть) преимущества. Обычно я начинаю с Number
, но сталкиваюсь с проблемами позже, фактически использую его и все равно изменяю его на подтип. Но это может быть только мой ограниченный опыт.
Так что я задаюсь вопросом, какова цель этого класса, а другой является общим предком других числовых типов без реальной функциональности?
безопасно? ;-) Не уверен в этом. –
Ну, как можно безопаснее ... по крайней мере, у вас не будет исключений! Но, конечно, если вы попытаетесь преобразовать беззаботно, не проверяя диапазоны, или считаете, что проблема усечения и округления может быть проблемой, тогда у вас наверняка возникнут проблемы. – Renato
Если вы действительно хотите сделать это безопасно, сохраните это значение как BigDecimal, а затем используйте различные точные методы (например, BigDecimal # longValueExact). Это вызовет исключение, если размер искомого примитива не сможет правильно сохранить значение. – Saish