No código do exemplo eu não achei o ChronoUnit.YEAR, eu li e só achei ChronoUnit.YEARS. O erro seria outro então? Se sim, qual seria esse erro?
No código do exemplo eu não achei o ChronoUnit.YEAR, eu li e só achei ChronoUnit.YEARS. O erro seria outro então? Se sim, qual seria esse erro?
Olá, Vitor! Tudo bem?
Na verdade, a unidade correta é ChronoUnit.YEARS mesmo. O erro no código que você mencionou não está relacionado a isso, mas sim a outros pontos.
Vamos analisar o código do exercício:
System.out.println(YearMonth.now().isSupported(
ChronoUnit.MONTHS));
System.out.println(YearMonth.now().isSupported(
ChronoField.DAY_OF_MONTH));
System.out.println(MonthDay.now().isSupported(
ChronoField.DAY_OF_MONTH));
System.out.println(LocalDate.now().isSupported(
ChronoUnit.DAYS));
System.out.println(LocalDate.now().isSupported(
ChronoUnit.YEARS));
System.out.println(LocalDateTime.now().isSupported(
ChronoField.HOUR_OF_AMPM));
System.out.println(LocalDateTime.now().isSupported(
ChronoField.YEAR));
O problema com esse código é que algumas das chamadas aos métodos isSupported não são válidas para os tipos de dados utilizados. Por exemplo:
YearMonth.now().isSupported(ChronoField.DAY_OF_MONTH) não é suportado porque YearMonth não possui a informação do dia.MonthDay.now().isSupported(ChronoField.DAY_OF_MONTH) é suportado, pois MonthDay representa um mês e um dia.YearMonth.now().isSupported(ChronoUnit.MONTHS) é suportado, pois YearMonth representa um ano e um mês.LocalDate.now().isSupported(ChronoUnit.DAYS) e LocalDate.now().isSupported(ChronoUnit.YEARS) são suportados, pois LocalDate representa uma data completa.LocalDateTime.now().isSupported(ChronoField.HOUR_OF_AMPM) e LocalDateTime.now().isSupported(ChronoField.YEAR) são suportados, pois LocalDateTime representa uma data e uma hora completas.Portanto, o código não compila devido ao uso incorreto do ChronoField com YearMonth.
A resposta correta para a pergunta do exercício é: D) Não compila
Espero ter ajudado e bons estudos!