2015-05-11 9 views
10

Ich brauche Ihre Hilfe bei der Initialisierung einer Variablen java.util.Date zu leeren. Wie ich die Seite ausführe und es zeigt nullpointerexception, wenn ich kein Datum auswählte.Wie zu initialisieren java.util.date zu leeren

Der Code ist:

private java.util.Date date2; 

Ich habe versucht, diese Variable leer zu machen, aber es hat nicht funktioniert>

private java.util.Date date2; 

if (date2==null || date2.equals("")) 
date2=""; 

jedoch mit der Initialisierung:

private java.util.Date date2= new java.util.Date(0,0,0); 

Der obige Code gibt mir einen Standardwert, den ich nicht möchte.

+0

Es ist eine schlechte Idee, was so zu machen (das heißt machen Nullpointerexceptions). – VadymVL

+3

'date2 =" "' funktioniert nicht, weil 'date2' ein' Date' und kein 'String' ist. Sie können einer Variablen, die keine "Zeichenkette" ist, keine "Zeichenkette" zuweisen. Außerdem ist 'date2.equals (" ")' immer 'false'. – Jesper

+2

was meinst du mit * initialisieren einer java.util.Date Variable auf leer *? – Blip

Antwort

10

Instanz von java.util.Date speichert ein Datum. Wie kannst du nichts darin speichern oder leer haben? Es kann nur Referenzen auf Instanzen von java.util.Date speichern. Wenn Sie es machen null bedeutet, dass es keine Instanz von java.util.Date bezieht.

Sie haben versucht, date2="";, was Sie von dieser Aussage zu tun, meinen Sie die Instanz von String auf eine Variable verweisen möchten, die zum Speichern von java.util.Date annehmen wird. Dies ist nicht möglich, da Java stark typisierte Sprache ist.

bearbeiten

Nach dem Kommentar zu der Antwort von geschrieben sieht LastFreeNicknamen

ich eine Form habe, dass das Datum Textbox standardmäßig leer in der Textbox sein soll, jedoch während der Einreichung die Daten, wenn der Benutzer nichts eingegeben hat, sollte es akzeptieren

Ich würde vorschlagen, Sie könnten überprüfen wenn das Textfeld leer ist. Und wenn es leer ist, dann könnte man Standarddatum in Ihrer Variable oder aktuelles Datum speichern oder zuweisen kann null wie unten dargestellt:

if(textBox.getText() == null || textBox.getText().equals(""){ 
    date2 = null; // For Null; 
    // date2 = new Date(); For Current Date 
    // date2 = new Date(0); For Default Date 
} 

Auch kann ich davon ausgehen, da Sie Benutzer fragen, ein Datum in einem eingeben TextBox verwenden Sie eine DateFormat, um den Text zu analysieren, der in TextBox eingegeben wird.Wenn dies der Fall ist, können Sie einfach die dateFormat.parse() aufrufen, die eine ParseException wirft, wenn das Format, in dem das Datum geschrieben wurde, falsch ist oder eine leere Zeichenfolge ist. Hier im catch Block können Sie die oben genannten Aussagen als Show unter:

try{ 
    date2 = dateFormat.parse(textBox.getText()); 
}catch(ParseException e){ 
    date2 = null; // For Null; 
    // date2 = new Date(); For Current Date 
    // date2 = new Date(0); For Default Date 
} 
+0

'neues Datum (0)' war sehr nützlich! – Kruser

1

Versuchen Sie die Initialisierung mit Nullwert.

private java.util.Date date2 = null; 

Auch private java.util.Date date2 = ""; wird nicht funktionieren, als "" eine Zeichenfolge ist.

0

Es ist nicht klar, wie Sie Ihre Date-Logik verhalten sollen? Normalerweise ist die Null Object pattern eine gute Möglichkeit, mit Standardverhalten umzugehen.

+0

Ich habe ein Formular, dass das Datum Textbox sollte standardmäßig leer sein in der Textbox, aber beim Übermitteln der Daten, wenn der Benutzer nichts eingegeben, sollte es akzeptieren – 99maas

4

IMO, Sie können kein leeres Date(java.util) erstellen. Sie können ein Date Objekt mit null Wert erstellen und einen Null-Check setzen.

Date date = new Date(); // Today's date and current time 
Date date2 = new Date(0); // Default date and time 
Date date3 = null; //Date object with null as value. 
if(null != date3) { 
    // do your work. 
} 
0

Eine Instanz von Date stellt immer ein Datum und nicht leer sein. Sie können einen Nullwert von date2 verwenden, um "da ist kein Datum" darzustellen. Sie müssen für null überprüfen, wann immer Sie date2 verwenden, um eine Nullpointer zu vermeiden, wie wenn Ihre Seite Rendering:

if (date2 != null) 
    // print date2 
else 
    // print nothing, or a default value 
Verwandte Themen