2015-05-11 16 views
10

Tôi cần sự giúp đỡ của bạn khi khởi tạo biến java.util.Date để trống. Khi tôi đang chạy trang và nó đang hiển thị nullpointerexception nếu tôi không chọn bất kỳ ngày nào.Cách khởi tạo java.util.date để trống

Mã này là:

private java.util.Date date2; 

tôi đã cố gắng để làm cho rằng biến có sản phẩm nào, nhưng nó đã không làm việc>

private java.util.Date date2; 

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

Tuy nhiên, với việc khởi tạo:

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

Đoạn mã trên sẽ cho tôi một giá trị mặc định mà tôi không muốn.

+0

Đó là một ý tưởng tồi để tạo ra thứ như thế này (tức là tạo ra nullPointerExceptions). – VadymVL

+3

'date2 =" "' không hoạt động, bởi vì 'date2' là' Date' và không phải là 'Chuỗi'. Bạn không thể gán một 'Chuỗi' cho một biến không phải là một' Chuỗi'. Ngoài ra, 'date2.equals (" ")' luôn luôn là 'false'. – Jesper

+2

ý của bạn là gì khi * khởi tạo biến java.util.Date thành rỗng *? – Blip

Trả lời

10

Ví dụ về java.util.Date lưu trữ ngày. Vậy làm thế nào bạn có thể lưu trữ không có gì trong đó hoặc để trống? Nó chỉ có thể lưu trữ các tham chiếu đến các cá thể của java.util.Date. Nếu bạn làm cho nó null có nghĩa là nó không đề cập đến bất kỳ cá thể nào của java.util.Date.

Bạn đã thử date2=""; ý của bạn là làm gì với tuyên bố này bạn muốn tham chiếu đến cá thể String đến biến được giả sử để lưu trữ java.util.Date. Điều này là không thể vì Java là Ngôn ngữ được đánh máy mạnh.

Sửa

Sau khi nhìn thấy những nhận xét được đưa lên câu trả lời của LastFreeNickname

Tôi gặp một hình thức mà các textbox ngày nên bởi trống mặc định trong hộp văn bản, tuy nhiên trong khi trình dữ liệu nếu người dùng không nhập bất cứ điều gì, nó phải chấp nhận nó

Tôi khuyên bạn nên kiểm tra nếu hộp văn bản trống. Và nếu nó là trống rỗng, sau đó bạn có thể lưu trữ ngày mặc định trong ngày biến hoặc hiện tại của bạn hoặc có thể gán nó null như hình dưới đây:

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

Ngoài ra tôi có thể giả định kể từ khi bạn đang yêu cầu người dùng nhập vào một ngày trong một TextBox, bạn đang sử dụng DateFormat để phân tích cú pháp văn bản được nhập trong số TextBox.Nếu trường hợp này xảy ra, bạn có thể chỉ cần gọi số dateFormat.parse() sẽ ném ParseException nếu định dạng mà ngày được viết không chính xác hoặc là chuỗi rỗng. Ở đây trong khối catch bạn có thể đặt những điều khoản trên như hiển thị dưới đây:

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

'ngày mới (0)' là rất hữu ích! – Kruser

1

Thử khởi tạo với giá trị null.

private java.util.Date date2 = null; 

Cũng private java.util.Date date2 = ""; sẽ không hoạt động dưới dạng chuỗi.

0

Không rõ bạn muốn hoạt động của logic Ngày của mình như thế nào? Thông thường, cách tốt để xử lý hành vi mặc định là Null Object pattern.

+0

Tôi có một biểu mẫu rằng hộp văn bản ngày phải theo mặc định trống trong hộp văn bản, tuy nhiên trong khi gửi dữ liệu nếu người dùng không nhập bất cứ điều gì, nó phải chấp nhận nó – 99maas

4

IMO, bạn không thể tạo số trống Date(java.util). Bạn có thể tạo đối tượng Date với giá trị null và có thể đặt séc rỗng.

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

Một thể hiện của ngày luôn đại diện cho một ngày và không thể để trống. Bạn có thể sử dụng giá trị null của ngày 2 để biểu thị "không có ngày". Bạn sẽ phải kiểm tra null bất cứ khi nào bạn sử dụng date2 để tránh NullPointerException, như khi hiển thị trang của bạn:

if (date2 != null) 
    // print date2 
else 
    // print nothing, or a default value 
Các vấn đề liên quan