Java - Jscience Определите новую единицу
-
25-09-2019 - |
Вопрос
Я хочу определить новую дистанционную единицу в Jscience.. Отказ Раздел «Учебное пособие» сайта проекта просто приводит к JavadoC, который, хотя, в то время как довольно завершен, немного слишком густой для меня, чтобы понять, как я на самом деле пойти на определение моего собственного подразделения.
Не могли бы вы предоставить пример?
Ваше здоровье.
Пит
Решение
возможно Этот другой вопрос О блоках в Java могут помочь.
Другие советы
Я знаю, что это старый пост, но .. Я собираюсь опубликовать ответ в любом случае, может быть, это будет полезно для кого-то
Для того, чтобы определить пользовательскую единицу в Jscience, вы должны продлить класс SystemOfUnits
И определите здесь все ваши пользовательские единицы.
Проверьте экзэмп ниже (я определяю устройство для акров)
public class MyUnits extends SystemOfUnits
{
private static HashSet<Unit<?>> UNITS = new HashSet();
private static final MyUnits INSTANCE = new MyUnits();
public static final Unit<Area> ACRE = myUnits((SI.METER.pow(2)).times(4046.8564224).asType(Area.class));
public static MyUnits getInstance()
{
return INSTANCE;
}
@Override
public Set<Unit<?>> getUnits()
{
return Collections.unmodifiableSet(UNITS);
}
private static <U extends Unit<?>> U myUnits(U unit)
{
UNITS.add(unit);
return unit;
}
}
Пожалуйста, посмотрите, как JSR 363 RI делает это (преемник до 275, который был реализован Jscience 4)https://github.com/unitsofmeasurement/unit-ri/blob/master/src/main/java/tec/units/ri/format/simpleunitformat.java
По умолчанию вкус SimpleUnitFormat поддерживает UTF-8, в то время как ASCII предназначен для ограниченных сред или устройств, которые могут не иметь графических или ограниченных наборов символов:
DEFAULT.label(MetricPrefix.MICRO(Units.LITRE), "µl");
ASCII.label(MetricPrefix.MICRO(Units.LITRE), "microL");
Примечание, метод MALK () будет введен в API JSR 363 в следующем выпуске кандидата для общественного проекта. В настоящее время это часть RI (https://github.com/unitsofMeasurement/unit-ri., а не Jscience, хотя это может в конечном итоге мигрировать на новый стандарт тоже в V5)