Как инициализировать java.util.date для пустых

Мне нужна ваша помощь в инициализации переменной java.util.Date для пустых. Когда я запускаю страницу, и она показывает исключение nullpointer, если я не выбрал дату.

Код:

private java.util.Date date2;

Я попытался сделать эту переменную пустой, но она не сработалa >

private java.util.Date date2;

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

Однако при инициализации:

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

Приведенный выше код даст мне значение по умолчанию, которое мне не нужно.

Ответ 1

Экземпляр java.util.Date хранит дату. Итак, как вы можете ничего хранить в нем или не пустить? Он может хранить ссылки только на экземпляры java.util.Date. Если вы сделаете это, null означает, что он не ссылается ни на один экземпляр java.util.Date.

Вы пробовали date2=""; то, что вы хотите сделать с помощью этого оператора, который вы хотите связать с экземпляром String с переменной, которая должна хранить java.util.Date. Это невозможно, так как Java сильно типизированный язык.

Edit

После просмотра комментария, отправленного в ответ LastFreeNickname

У меня есть форма, что текстовое поле даты должно быть по умолчанию пустым в текстовом поле, однако при отправке данных, если пользователь ничего не вводил, он должен принять его

Я бы предположил, что вы можете проверить, пусто ли текстовое поле. И если он пуст, вы можете сохранить дату по умолчанию в своей переменной или текущей дате или можете назначить ее null, как показано ниже:

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

Также я могу предположить, что, поскольку вы просите пользователя ввести дату в TextBox, вы используете DateFormat для разбора текста, введенного в TextBox. Если это так, вы можете просто вызвать dateFormat.parse(), который выдает ParseException, если формат, в котором была записана дата, является неправильным или пустой. Здесь, в блоке catch, вы можете поставить приведенные выше инструкции как показано ниже:

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
}

Ответ 2

IMO, вы не можете создать пустой Date(java.util). Вы можете создать объект Date со значением null и можете поместить нулевую проверку.

 Date date = new Date(); // Today 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.
 }

Ответ 3

Попробуйте инициализировать нулевое значение.

private java.util.Date date2 = null;

Также private java.util.Date date2 = ""; не будет работать как "" - это строка.

Ответ 4

Не понятно, как вы хотите, чтобы ваша логика Date работала? Обычно хорошим способом справиться с поведением по умолчанию является шаблон нулевого объекта.

Ответ 5

Экземпляр Date всегда представляет дату и не может быть пустым. Вы можете использовать нулевое значение date2 для представления "нет даты". Вам нужно будет проверять значение null, когда вы используете date2, чтобы избежать исключения NullPointerException, например, при рендеринге вашей страницы:

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