2016-05-25 4 views
-2

Der Spaltenname ist vom Typ double.Feld.set gibt leere Zeichenfolge in Java zurück

Class c = this.getClass(); 
Field t = c.getDeclaredField(columnName); 
t.setDouble(this,Double.parseDouble("")); 

die letzte Zeile löst eine Ausnahme von „leeren String“

Ich brauche leere Zeichenfolge in t und die Spalte eingefügt werden, in dem ich die leere Zeichenkette einzufügen versuche ist vom Typ Double. Kann jemand helfen und eine Alternative zur Verfügung stellen?

+0

Wie stellst du dir vor, eine leere '' String'' in ein '' Double'' Feld zu setzen? – f1sh

+0

Wie kann ich dann nichts in diesem Feld anzeigen. Wenn Sie null setzen, wird die Ausnahme ausgelöst, dass double nicht auf null gesetzt werden kann. – user3274263

+0

Sie können nicht? Ein "Double" muss einen Wert haben. nicht initialisierte Dubletten werden auf den Standardwert von 0,0 gesetzt. Wenn Sie die Kontrolle über 'columnName' haben, können Sie ein' Double' anstelle von 'double' (Objekt statt primativ) machen, das null sein darf. – Ironcache

Antwort

2

Sie können keine leeren Werte oder null für ein Grundelement festlegen. Wenn Sie absolut Notwendigkeit, es zu auf Null gesetzt, dann den Datentyp des Feldes ändern, um java.lang.Double, rufen Sie dann t.set(this, null)

Der Ausfall von Ihrem Versuch verursacht wird, zu analysieren, „“ als Doppel, nicht durch die Wert wird gesetzt.

+0

Es sagt, kann nicht doppeltes Feld auf null Wert gesetzt – user3274263

+0

Ja, das ist richtig. Wenn Sie null setzen wollen, dann geben Sie das Feld '' java.lang.Double'' (der Wrapper-Typ) ein, nicht '' double'' –

0

parseDouble gibt einen primitiven Doppel enthält den Wert des string:

Gibt ein neues Doppel auf den durch den angegebenen String dargestellte Wert initialisiert, wie Doppel durch die valueOf Methode der Klasse durchgeführt.

Die Gründe für Ausnahmen:

Würfe:

Nullpointer - wenn die Zeichenfolge

Number null ist - wenn die Zeichenfolge ein parsable Doppel nicht enthält.

Die Javadoc ist dein Freund: https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html#parseDouble(java.lang.String)

Für Ihr Problem, wenn Sie Zeit nehmen, die javadoc https://docs.oracle.com/javase/7/docs/api/java/lang/reflect/Field.html#setDouble(java.lang.Object,%20double)

Sie für diese Methode sehen zu lesen (setDouble)

Wirft :

NullPointerException - wenn das angegebene Objekt null ist und das Feld eine Instanz ist f Feld.

so können Sie es verwenden:

Double d = Double.valueOf("0.0"); 
t.set(this,d); 
+0

Er möchte das Feld auf '' null'', nicht auf 'setzen '0''. Das ist mit Primitiven nicht möglich. – f1sh

0

Eine leere String der falsche Weg ist hier zu gehen. Sie möchten den Wert auf null setzen, was im Grunde "kein Wert" bedeutet. diese

Verwendung:

Class c = this.getClass(); 
Field t = c.getDeclaredField(columnName); 
t.set(this, null); 

Bitte beachten Sie, dass dies nur funktioniert, wenn der Typ des Feldes Double ist, nicht double.

double ist ein primitiver Typ und als solcher gibt es keine echte Möglichkeit, "keinen Wert" darzustellen. Double Objekte sind keine Primitiven, sondern Objekte.Als solche können sie auf null eingestellt werden, was Sie wollen.