2010-10-24 3 views
4

Я хочу определить новый блок расстояния в JScience. Раздел «Учебное пособие» веб-сайта проекта просто приводит к Javadoc, который, хотя и довольно полный, для меня слишком плотный, чтобы понять, как я на самом деле собираюсь определить свою собственную единицу.Java - JScience определяет новый блок

Не могли бы вы привести пример?

Cheers.

Пит

+1

Не похоже, что слишком много людей используют JScience. Возможно, вам придется написать учебник. –

ответ

1

возможно this other SO question о единицах в Java может помочь.

+0

Не помогло мне, потому что нет четкой информации о том, как добавить новый блок. – FrEaKmAn

3

Я знаю, что это старый пост, но .. я собираюсь отправить ответ в любом случае, может быть, это будет полезно кому-то

Для того, чтобы определить единицу измерения в JScience, вы должны расширьте класс SystemOfUnits и определите здесь все свои пользовательские устройства.

Проверьте Exemple ниже (я имею определение единицы для акров)

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; 
    } 
} 
+2

любые идеи, как назначить символ единице? – FrEaKmAn

+0

У меня тоже вопрос. Я посмотрел их документы, и я думаю, что нам нужно http://jscience.org/api/javax/measure/unit/UnitFormat.html (метод меток), но я не знаю Не знаю, как его реализовать. – Ralphilius

0

Пожалуйста, посмотри на то, как 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, для ограниченных сред или устройств, которые не могут не иметь GUI или ограниченный характер устанавливает:

DEFAULT.label(MetricPrefix.MICRO(Units.LITRE), "µl"); ASCII.label(MetricPrefix.MICRO(Units.LITRE), "microL");

Примечание. Метод label() будет представлен API JSR 363 в следующем выпуске кандидата для общедоступного проекта. В настоящее время это часть RI (https://github.com/unitsofmeasurement/unit-ri, а не JScience, хотя она может в конечном итоге перейти на новый стандарт тоже в V5)

Смежные вопросы