Альтернативы для десятичных декораций в J2ME в J2ME
-
27-10-2019 - |
Вопрос
Мы вносим некоторые изменения в устаревший проект с использованием J2ME. До сих пор десятичные числа рассматривались как строки, поскольку не требовались арифметические операции. Значения отображались только как текст.
Теперь требуется произвольная арифметика. Если бы это был Java SE, я бы использовал BigDecimal
, но его нет в API MIDP/CLDC.
Я пытался проработать свой пользовательский урок DecimalNumber, но, хотя я исправлял некоторые ошибки и обнаруживал новые в модульных тестах, я понял, что у него будет некоторое время, чтобы сделать этот класс Rock Solid и без ошибок.
Итак, вместо переосмысления колеса, какие альтернативы я могу повторно использовать для этой цели? Например, может BigInteger
а также BigDecimal
Занятия переносятся в J2ME (CLDC1.1)? Я читал по другому вопросу, кто -то пытается портировать Javase's BigDecimal
с Bouncycastle's BigInteger
. Анкет Это совместимы?
Любая помощь будет оценена.
Решение 2
Я успешно перенес Javase BigDecimal
. Анкет Мне пришлось портировать также эти другие классы:
- Сопоставимо
- Число
- BigInteger
- Биты
- MintableBigInteger
- SignedmutableBigInteger
В основном мне пришлось удалить дженерики, некоторые методы сериализации, почти каждый метод в BigInteger
Связаны с простыми числами и заменить int[].clone()
с аналогичным методом. Также настройка compareTo
методы
Моя цель состояла в том, чтобы просто достичь произвольной назначения и преобразования из строки в BigDecimal, мне не нужно ничего другого.
ОБНОВИТЬ: Не работает!!!Кажется, что при получении исходного кода я смешал классы из разных источников (были из OpenJDK, Oracle Javase, ...). Все это были для Java 6, но я заметил некоторые серьезные изменения между различными выпусками версий. Оказывается, что они плохо взаимодействуют (или либо некоторые из них содержат серьезные ошибки, но я так не думаю), поэтому порт был большим провалом. Мне нужно решить это как можно скорее, так что теперь я ищу следующие альтернативы:
- PayPal выпустил API мобильного платежа. Библиотека Blackberry содержит большую часть. Это не открыто, и классы были запутаны, но сейчас я могу сказать, что он работает должным образом. Требуются только три файла класса. Я ожидаю, что это было тщательно протестировано, будучи вещами PayPal (по крайней мере, я надеюсь на это).
- Существует также SimpleBigDecimal Bouncycastle, но он не такой мощный, как у Paypal или Java. Я был заинтересован в создании строкового конструктора, которого не предоставляет этот класс.
- Я предполагаю, что порт от Javase будет легче использовать Javase V1.4.2. Поскольку у него нет дженериков, это может быть быстрее развиваться, но я неохотно буду этим, потому что я думаю, что эти старые классы, вероятно, не так надежны, как более новые в 1.6 или 1,7
- Я мог бы внедрить свой собственный сокращенный класс для данной шкалы (1 или, может быть, 2 десятичных деть. быстрый обходной путь.
ОБНОВИТЬ:
Я наконец использовал Bigdecimal Port PayPal, содержащийся в их библиотеке платежей мобильности для BlackBerry. BlackBerry основан на J2ME, поэтому он идеально подходит для этой задачи. Я сделал значительное количество модульных тестов на нем, и я могу сказать, что это согласуется с поведением Javase BigDecimal.
Другие советы
Считали ли вы зацепить реализацию гармонии (см. здесь)? Вероятно, это потребуется некоторая очистка, так как, к сожалению, не общая, но это для вас.