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?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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!