JavaRush/Java блог/Архив info.javarush/Новый класс в JDK8 LocalDate, LocalTime
IvanSPb
21 уровень

Новый класс в JDK8 LocalDate, LocalTime

Статья из группы Архив info.javarush
участников
Доброе время суток! При занятиях на 8 уровне JavaRush выяснил, что класс Date является устаревшим, Intellij IDEA не рекомендует его использовать. Поискал, нашел рекомендуемые классы. Компанией Oracle создано новое API для работы с датами и временем. Основными объектами нового API стали классы LocalDate, LocalTime и LocalDateTime (последний является этаким объединением двух предыдущих). Официальная документация oracle советует представлять эти классы как календарь или часы на стене возле вас. Новый класс в JDK8 LocalDate, LocalTime - 1Для начала создадим пару объектов этих классов и посмотрим, что нам вернет их toString():
LocalDate today = LocalDate.now();
LocalDate MyBirthday = LocalDate.of(1988, Month.APRIL, 3);
И вот вопрос: почему при создании объектов новых классов не используется ключевое слово new? Потратил массу времени, ответ пока так и не нашел. P.S. Предлагаю также изменить ряд упражнений и лекций в связи с новыми реалиями — появлением новых классов и устареванием существующих.
Комментарии (12)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
14 февраля 2020, 14:28
Я так понимаю существует большое количество старого кода с которым, возможно, придется сталкиваться. Стараюсь писать задачки с датами сначала используя устаревший Date, а потом (убедившись в работоспособности) комментирую этот код и пишу еще раз, но уже с использованием новых возможностей и классов из java.time . Что вы думаете по этому поводу?
Di Ma Java Developer в Сбер
8 мая 2019, 03:26
Потому что конструктор приватный ))) !!! Используется static factory method https://refactoring.guru/ru/replace-constructor-with-factory-method Джошуа Блох Эффективное программирование 2019 г 2 глава ))
Anastasia Kunatava
Уровень 16
18 марта 2019, 07:30
Эх,вопрос 2015 года, а в лекциях все еще класс Date =(
AndreGold
Уровень 28
26 декабря 2015, 00:24
P.S. Предлагаю также изменить ряд упражнений и лекций в связи с новыми реалиями — появлением новых классов и устареванием существующих.
P.S. если бы Вы были чуточку внимательнее и расширяли свое мировозрение по проекту JavaRush, то знали бы,
что здесь используется Java 7, а в ней классом для работы с датами является, класс Date

И вот вопрос: почему при создании объектов новых классов не используется ключевое слово new??
Потому что метод статический метод of() возвращает обект LocalDate
public static LocalDate of(int year,
                           int month,
                           int dayOfMonth)
Obtains an instance of LocalDate from a year, month and day.
Smetchik
Уровень 15
26 декабря 2015, 10:40
Если бы вы были чуть внимательнее то увидели бы, что в Java SE7 уже большинство методов и конструкторов класса Date объявлены Deprecated. Учитывая что люди здесь учатся, то учить их использаванию Date, как бы устарело. Поэтому вопрос человека вполне разумен.
AndreGold
Уровень 28
26 декабря 2015, 12:08
Согласен с вами, более детально проанализировав доку класса Date убедился в этом. Однако возвращаясь к ответу на пост, дело в том, что релиз Java SE8 состоялся в 2014, а проекту Javarush уже года 3, и учитывая то, что они отказались от идеи развития уровней от 41 до 80, то сомневаюсь, что кто-то, что-то будет менять.
Smetchik
Уровень 15
2 января 2016, 23:32
Жаль если проект перейдет в фазу поддержки, а не развитии, но я не далее как месяц назад где-то здесь читал переходе на Java SE8. Но даже если никто ничего менять не будет, задачи с Date нужно удалить. Так как в настоящее время этот класс представляет из себя обертку над методом System.currentTimeMillis(), плюс куча private методов и полей, но если использовать не устаревшие методы, то это фактически просто вызов System.currentTimeMillis(), второй оставшийся конструктор, фактически сеттер поля fastTime.
Я конечно тоже только учусь, но не понимаю, зачем весь этот мусор оставят в будущих версиях.
Alexander Korznikov
Уровень 9
29 января 2019, 18:58
2019 год на дворе и по прежнему задачи с Date.
Maxim Romanov
Уровень 11
5 июля 2019, 15:59
Привет из 2019. Все по-прежнему.
vitaly tu460
Уровень 9
18 июля 2020, 03:13
Привет из 2020. Все по-прежнему.
Alexander G.
Уровень 22
16 мая 2021, 15:10
Привет из 2021. Ну вы поняли
ferasinka
Уровень 32
25 декабря 2015, 23:00
Потому что статические методы, вызываемые у LocalDate возвращают ссылку уже на готовый объект, который создается где-то в недрах других методов этого класса.