2010-10-24 4 views
4

Je souhaite définir une nouvelle unité de distance dans JScience. La section «Tutorial» du site Web du projet mène juste à Javadoc qui, bien qu'assez complet, est un peu trop dense pour que je puisse comprendre comment je définis réellement ma propre unité.Java - JScience définit une nouvelle unité

Pourriez-vous donner un exemple?

Cheers.

Pete

+1

Il ne semble pas que trop de gens utilisent JScience. Peut-être que vous devrez écrire le tutoriel. –

Répondre

1

peut-être this other SO question sur les unités en Java peuvent aider.

+0

N'a pas aidé pour moi, car il n'y a pas d'informations claires comment ajouter une nouvelle unité. – FrEaKmAn

3

Je sais que c'est un ancien poste, mais .. je vais poster la réponse de toute façon, ce sera peut-être utile à quelqu'un

Afin de définir une unité de mesure dans JScience, vous devez étendre la classe SystemOfUnits et définir ici toutes vos unités personnalisées.

Vérifiez l'exemple ci-dessous (je définition de l'unité pour ACRES)

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

des idées comment assigner un symbole à l'unité? – FrEaKmAn

+0

J'ai la même question aussi .. J'ai regardé leurs docs et je pense que ce dont nous avons besoin est http://jscience.org/api/javax/measure/unit/UnitFormat.html (label method), mais je ne sais pas Je ne sais pas comment l'appliquer. – Ralphilius

0

S'il vous plaît jeter un oeil à la façon dont JSR 363 RI le fait (le successeur de 275 qui a été mis en œuvre par JScience 4) https://github.com/unitsofmeasurement/unit-ri/blob/master/src/main/java/tec/units/ri/format/SimpleUnitFormat.java

Le goût par défaut de SimpleUnitFormat prend en charge UTF-8, alors que ASCII est pour les environnements ou certains périphériques qui peuvent avoir aucune interface graphique ou jeux de caractères limités:

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

Notez que la méthode label() sera introduite dans l'API JSR 363 dans la prochaine version candidate pour Public Draft. Actuellement, il fait partie du RI (https://github.com/unitsofmeasurement/unit-ri, pas JScience, bien qu'il puisse éventuellement migrer vers le nouveau standard, aussi dans V5)

Questions connexes