Не найдено подходящего конструктора для нового Date() в пакете awt или sql
Я импортировал java.sql.*;
но он не показывает подходящего конструктора, найденного для
Date() Date
d=new Date();
что это значит? Я запутался: есть Date
класс доступен в пакете sql или нет? Я также импортирую java.util.Date
,
1 ответ
Позвольте мне начать с того, чтобы немного отойти в сторону: реальное и хорошее решение вашей проблемы - избежать давно устаревших java.sql.Date
класс полностью. Раньше он использовался для хранения дат в базах данных SQL и их извлечения, но сегодня вам гораздо лучше использовать LocalDate
от java.time, современного API даты и времени Java, для этого. Чтобы получить текущую дату:
LocalDate ld = LocalDate.now(ZoneId.of("Asia/Shanghai"));
Пожалуйста, замените нужный часовой пояс, если это не Азия / Шанхай.
Тем не менее, чтобы ответить на ваш вопрос: когда вы печатаете new Date()
Вы пытаетесь вызвать конструктор без каких-либо аргументов. Это требует конструктора без каких-либо параметров. Многие классы имеют такой конструктор, но не все классы.
Теперь посмотрите на документацию по API java.sql.Date
класс Вы увидите, что у него есть два конструктора, Date(int year, int month, int day)
а также Date(long date)
(первое не рекомендуется, то есть избегайте его, если есть возможность). Оба конструктора имеют параметры, поэтому ни один из них не соответствует вашей попытке вызвать один без аргументов. Другими словами, ни один из них не подходит для вызова, который вы пробовали. Это то, что означает сообщение.
Класс, безусловно, доступен в java.sql
пакет. Проблема только в конструкторе (и в том, что класс устарел, но я повторяюсь).