Einheiten in Java

Hallo liebe Leute,

ich programmiere ein bisschen in Java und hantiere mit Daten rum. Diese sind in XML-Files gespeichert und ich bin auch in der Lage diese mit jdom2 zu parsen und zu nutzen. Nun zu meinem eigentlichen Problem.

Das XML-File hat beispielsweise folgende Information:
Java:
<Durchmesser  value="4.185" unit="m"/>

Ich lese das Ganze ein und arbeite mit dem value = 4.185, den ich in einem entsprechenden Objekt speichere, da ich meine eigene Struktur aufgebaut habe. Die Information aus dem Attribut unit lasse ich ungenutzt und gehe einfach von Metern aus. Tsja, und natürlich gibt es jetzt ein anderes File, in dem dann

Java:
<Durchmesser  value="45.185" unit="mm"/>

steht. Meine Frage: Wie sollte man seine Klasse aufbauen um mit unterschiedlichen Einheiten umzugehen? Was ist da das Sinnvollste? Eine eigene "Einheiten-Klasse" und dann beim konstruieren der Objekte immer alles in SI-Einheiten umrechnen? Ich hab zwar ein paar Ideen im Kopf, aber bevor ich wie wild drauf losprogrammiere, wollte ich nachfragen, ob es für solche Geschichten eine Standardherangehensweise gibt.

Ich danke schon einmal ...

Grüße
PanchoVarallo
 

Joose

Top Contributor
Es kommt natürlich auch etwas auf den Kontext an was hier zu bevorzugen ist.
Brauchst du die Unit danach wieder zum rausschreiben? Um welche Größenordnung haltet es sich bei den Werten?


Möglichkeit 1: Du hast eine eigene Klasse/Enum für die Einheit und wenn du mit dem Durchmesser rechnen willst musst du diesen Wert umrechnen.

Der Vorteil ist hier das die Basisinformation nicht verloren geht. Der Nachteil ist das du bei jeder Rechnung mit dem Durchmesser möglicherweise umrechnen musst.

Möglichkeit 2: Schon beim Einlesen der Daten kontrollierst du die Unit und rechnest auf deine gewünschte Standard Einheit um wenn notwendig.

Der Vorteil du hast einen Standard Einheit, welche das Umrechnen zur Laufzeit unnötig machen sondern direkt beim Einlesen 1x erledigt. Der Nachteil ist das du nicht mehr weißt welches die eigentliche Einheit dieses Durchmesser war.

Möglichkeit 3: Du rechnest beim Einlesen deinen Wert um, speicherst aber noch die eigentliche Einheit mit.

Der Vorteil liegt vor allem an der Vollständigkeit deiner Daten. Der Nachteil du haltest mehr Daten im Speicher als du vielleicht brauchst.
 

nvidia

Bekanntes Mitglied
[...] Wie sollte man seine Klasse aufbauen um mit unterschiedlichen Einheiten umzugehen? Was ist da das Sinnvollste?

Schau dir mal an wie es z.B. in der JScience-Bibliothek geregelt wurde. Das Problem mit Java ist, das es unglaublich hässlich (optisch) und umständlich (syntaktisch) wird mit "Dimensionen" bzw. "Einheiten" zu rechnen.
 
Nach weiteren Recherchen präferiere ich für mich jetzt folgende Lösung:

Ich mache folgende enum:

Java:
public enum LengthUnit
{	
  km() {
    public double convertTo( LengthUnit a, double value )
    {
      return a == km ? value : (a == m  ? value * 1000 : value * 1000000);
    }
  },
  
  m() {
    public double convertTo( LengthUnit a, double value )
    {
      return a == m ? value : (a == km  ? value / 1000 : value * 1000);
    }
  },
  
  mm() {
    public double convertTo( LengthUnit a, double value )
    {
      return a == mm ? value : (a == km  ? value / 1000000 : value / 1000);
    }
  };

  public abstract double convertTo( LengthUnit a, double value );
}

und immer wenn ich irgendwo eine Länge definiere nutze ich die folgende Klasse:

Java:
public class Length {
	
	double value;
	LengthUnit unit;
}

Damit habe ich immer schön die Eingabeeinheit gespeichert und kann lässig durch die uberschriebene convertTo()-Methode umrechnen:

Java:
Length l = new Length(2, LengthUnit.valueOf("km"));
System.out.println(l.getValue() + " " + l.getUnit()); // 2.0 km
System.out.println("Oder in m: " + l.getUnit().convertTo(LengthUnit.m, l.getValue())); // Oder in m: 2000.0

Was sagt ihr?

Grüße
PanchoVarallo
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W jaxws jaxb wsdl Java-Klassen generieren und binding.xml verwenden XML & JSON 1
iman XML Attribute mit JAVA einlesen mit Spring Batch XML & JSON 0
T Tags in XML Datei mit Java erstellen XML & JSON 3
E JAXB und java.nio.file.Path XML & JSON 4
B XML-Daten mit SAX Parser verarbeiten in Java XML & JSON 4
S Java REST Client + Json XML & JSON 8
L Lässt sich folgendes so oder so ähnlich mit Java und XML umsetzen XML & JSON 3
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
L login - Java IOException jaas.config File or Directory not present XML & JSON 1
M Text eines Elements in XML Datei mit JAVA bearbeiten und kompletten Element-Zweig hinzufügen XML & JSON 16
J JSON zu Java mit der GSON Google API XML & JSON 0
B JAXB - java.util.Locale does not have a no-arg default constructor XML & JSON 2
E JAVA simple.JSONObject cannot be cast to simple.JSONArray XML & JSON 9
T Visualisierung von XML Dateien in einer Java SwingGui XML & JSON 11
A WSDL und Java XML & JSON 5
A XMLRPC für Java XML & JSON 3
S XML auf Java Klassen Mappen XML & JSON 10
N Java XML schreiben funktioniert nicht XML & JSON 1
B aus xsd Java Klassen generieren XML & JSON 3
MiMa Mehrfachvariablen in Java durch XML XML & JSON 4
Q XML-File als Objekt in Java XML & JSON 6
Q Konvertierung von json zum Java Objekt nach vorgegebenem Schema XML & JSON 3
AMStyles XPATH Befehl SVG Java XML & JSON 2
S Wie aktualisiert man den Java-Kode mit FOP1.0? XML & JSON 1
L XSL: Aufruf Java-class XML & JSON 11
N Java Code aus XML Datei generieren XML & JSON 8
GUI-Programmer java.io.File aus .jar beziehen XML & JSON 6
A Unterschiedliche Datenstruktur XML <-> Java mappen XML & JSON 9
R XSD aus Java Klassen erzeugen?? XML & JSON 2
N xsd pattern in java einlesen XML & JSON 6
M java.lang.RuntimeException: Failed to parse document XML & JSON 4
F SOAP in Java XML & JSON 6
Q Atom/RSS-Feed lesen - per XSD zu Java-Code XML & JSON 4
S JAXB 2 und Java Annotationen/Interfaces generieren XML & JSON 3
N Google Wetter XML (nur current_condition) auslesen mit Java XML & JSON 15
F Einlesen von JDBC connection in Java von XML XML & JSON 4
D xsd->java mit Eclipse?! oder wie? XML & JSON 27
M Probleme mit XPath bei Java XML & JSON 5
_dp Java XML Parse error: findet end-tags nicht XML & JSON 10
V JAXB schema 2 java XML & JSON 3
S XJC --> Java-Objects compile Problem XML & JSON 4
G Mit JSON Java und C# verbinden XML & JSON 4
K XML Datei in ein Java package „einbinden" XML & JSON 3
H Java - XML - Rekursion - Verwirrung XML & JSON 6
F XML Datei in Java einlesen XML & JSON 4
J XSD > XML > Java XML & JSON 7
F XML mit Java XML & JSON 2
algorismi SVG Datein mit Batik in Java reinladen XML & JSON 3
S Java - Klassen erzeugen aus xsd bzw. wsdl XML & JSON 3
D ID's aus XML Datei rauslesen und in Java ausgeben XML & JSON 7
N value Wert einer XML Datei mit JAVA bearbeiten XML & JSON 21
Mike90 -xlsx Dateien in Java lesen XML & JSON 3
T StAX / SAX => Wie XML Datenstruktur in Java abbilden? XML & JSON 2
H XML plattformunabhängig/Open Source für Java XML & JSON 4
C Java-Imports bei Jaxb XML & JSON 8
slawaweis Problem mit XSLT (wahrscheinlich ein Bug in Java 6) XML & JSON 16
Fadi .classpath(XML) mit Java lesen XML & JSON 2
M Frage zu Erklärung im Online book "Java ist auch eine I XML & JSON 4
M Problem mit FOP in Java Programm XML & JSON 2
H Fop / Java /Fonts XML & JSON 6
H XSL Aufruf via Java mit neuen Fonts XML & JSON 9
T Java Klasse für gegebenes XML erstellen XML & JSON 4
M Xlink in Java-Objekt umwandeln XML & JSON 9
S Jdom+java webstart XML & JSON 4
P Einstieg in XML mit Java XML & JSON 3
G MS-Word Dokument mit Java erstellen XML & JSON 2
N AXIOM mit Java 1.4 XML & JSON 4
J DTD in Java integrieren? XML & JSON 3
L XML Datei in Java angeben Pfad? XML & JSON 3
G Problem mit XML-Schema Validierung mit Java XML & JSON 12
G XML mit JAVA an URL senden (http post) XML & JSON 12
D Java DOM Ausgabe ohne XML header XML & JSON 4
S XML Strings in JAVA einlesen, aber wie? XML & JSON 8
S Java 6 und Xerces-j-2-9 XML & JSON 3
E XML mit java einlesn XML & JSON 2
L mit Java eine HTML-Datei erstellen XML & JSON 3
O OpenDocument-Tabelle mit Java lesen und schreiben XML & JSON 3
G JAVA und DOM XML & JSON 2
M Java und XSLT: Performanz-Problem XML & JSON 5
P DTD -> Java XML & JSON 4
K xml --> sax --> java objekthierarchie XML & JSON 2
B DTD aus Java erzeugen XML & JSON 2
S JAVA XML Parser der einen String parst XML & JSON 3
K java + xpath -> performanceproblem XML & JSON 9
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
A Kann XML weitere XMLs inkludieren? Oder kann es Java? XML & JSON 5
vogella *Erledigt* XML und Java DOM Tutorial XML & JSON 3
T SOAP mit Java ohne HTTP Server möglich? XML & JSON 3
C HTML-Befehle per Java entfernen XML & JSON 7
W Java und XML - help request XML & JSON 3
M [SOLVED]Ausgabe mit Java XML & JSON 2
P Unterschiede java 1.4 und 1.3 XML & JSON 3
M generate SVG with java XML & JSON 2
G java+xml mit dom4j XML & JSON 4
P XSLT in Java verwenden XML & JSON 7
M Auswertung arithmetischer Ausdrücke mit SAX und Java XML & JSON 7
S XMl Dateien in Java schreiben XML & JSON 4
B XML-Document mit Java erzeugen und zuruecksenden XML & JSON 1
J Beispiel aus Java Magazin 03/2004 gesucht ! XML & JSON 6
R java.net.MalformedURLException: no protocol . XML & JSON 12

Ähnliche Java Themen

Neue Themen


Oben