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!