Не найдено подходящего конструктора для нового 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 пакет. Проблема только в конструкторе (и в том, что класс устарел, но я повторяюсь).

Другие вопросы по тегам