Java - JScience definire una nuova unità
-
25-09-2019 - |
Domanda
voglio definire una nuova unità distanza in JScience . La sezione "Tutorial" del sito web del progetto porta solo a Javadoc che, pur abbastanza completa, è un po 'troppo densa per me per capire come Io in realtà fare per definire la mia propria unità.
Può fornire un esempio?
Saluti.
Pete
Soluzione
quest'altra domanda SO sulle unità in Java possono aiutare.
Altri suggerimenti
So che questo è un vecchio post, ma .. ho intenzione di inviare la risposta in ogni modo, forse sarà utile a qualcuno
Al fine di definire un'unità personalizzata in JScience, è necessario estendere la SystemOfUnits
di classe e definire qui tutte le vostre unità personalizzate.
Controllare l'exemple sotto (sto definendo l'unità per acri)
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;
}
}
Si prega di dare un'occhiata a come JSR 363 RI fa questo (il successore di 275 che è stato implementato da JScience 4) https: / /github.com/unitsofmeasurement/unit-ri/blob/master/src/main/java/tec/units/ri/format/SimpleUnitFormat.java
Il sapore di default di SimpleUnitFormat supporta UTF-8, mentre ASCII è per gli ambienti limitati o dispositivi che possono avere alcuna interfaccia grafica o serie limitate di caratteri:
DEFAULT.label(MetricPrefix.MICRO(Units.LITRE), "µl");
ASCII.label(MetricPrefix.MICRO(Units.LITRE), "microL");
Nota, il metodo etichetta () sarà presentato al JSR 363 API nella prossima release candidate per Bozza pubblica. Attualmente fa parte del RI ( https://github.com/unitsofmeasurement/unit-ri , non JScience, anche se può eventualmente migrare verso il nuovo standard, anche in V5)