2015-12-01 14 views
6

Sto utilizzando l'implementazione di riferimento di JSR 363: Units of Measurement API da maven (tec.units: unit-ri).JSR 363 aggiunta di nuove unità

Ora devo aggiungere alcune unità come un cucchiaino, un'oncia fluida e così via.

Im estendendo la classe Unità per aggiungere una nuova unità del genere:

public static final Unit<Volume> TEASPOON = addUnit(new TransformedUnit<Volume>("tsp", CUBIC_METRE, new MultiplyConverter(0.000005))); 

Questo sembra funzionare per la conversione, ma "cucchiaino" non è l'analisi, così come faccio aggiungo al parser?

E Im problemi ad aggiungere Fahrenheit ad esempio: T (° F) = T (K) × 9/5 - 459,67

Come posso fare questo con i convertitori, o devo estendere UnitConverter e creare il mio?

risposta

0

Anche se si può definire la propria unità, unità comuni come CUCCHIAINO o Oncia fluida sono già disponibili in moduli di estensione per JSR 363 come https://github.com/unitsofmeasurement/uom-systems

https://github.com/unitsofmeasurement/uom-systems/tree/master/common per la libreria RI-based. Fahrenheit è anche lì.

Tutti questi sistemi o il sistema "completo SI" sono disponibili sul repository pubblico JCenter. Intendiamo anche sincronizzarlo presto con MavenCentral, ma puoi utilizzarlo allo stesso modo da JCenter se aggiungi la sua definizione di repository ai file di build Maven (o Gradle, ecc.).

+0

Ho anche provato questo esercizio definendo un'unità personalizzata PARSEC (so che è già lì). Sto facendo fatica a stamparlo come Parsec (pc). L'ho sempre stampato come metro. Qualche aiuto su come raggiungere questo obiettivo e renderlo convertibile in metro, chilometro e così via? –

+0

Con il prossimo aggiornamento, PARSEC sarà anche in [Unicode CLDR] [1], entrambi su RI e Java SE8 + usando 'SimpleUnitformat'. [1]: https://github.com/unitsofmeasurement/uom-systems/tree/master/unicode –

0

Grazie per aver menzionato. Se stai usando SimpleUnitFormat (lasciando temporaneamente Locale per ora) potresti mancare un'espressione label() nei posti giusti.

Avete un account GitHub, quindi, se possibile, archiviarlo sotto https://github.com/unitsofmeasurement/uom-systems/issues e risolveremo il problema il prima possibile. O presentare un PR.

+0

Finora PARSEC esiste almeno nel sistema di unità UCUM, che ha la particolarità di implementazioni dedicate di 'FormFormat', vedere [UCUMDemoSE] (https://github.com/unitsofmeasurement/uom-demos/blob/master/console/systems/ucum/src/main/java/tec/uom/demo/systems/ucum/UCUMDemoSE.java). Chiamando toString() su uno di questi si ritorna all'implementazione tramite 'SimpleUnitformat'. Che al momento non è a conoscenza di tutte le stringhe UCUM. Potrebbe essere fatto tramite Label, ma probabilmente ha causato una certa ridondanza o magia "reflection". –

Problemi correlati