Java 从传递的对象获取正确的时态类型

Java 从传递的对象获取正确的时态类型,java,localdate,java-time,Java,Localdate,Java Time,有没有办法确定传递对象的时间类型?目前我有一个Temporal参数,它将Temporal转换为LocalDate并返回LocalDate对象 假设我在此Temporal参数中传递了LocalDateTime,该方法将引发异常 有没有办法找出传递的时态的类型?我不知道您是如何转换到LocalDate的。我相信这一个有效 /** * @throws DateTimeException if the <code>Temporal</code> hasn’t got * en

有没有办法确定传递对象的时间类型?目前我有一个
Temporal
参数,它将
Temporal
转换为
LocalDate
并返回
LocalDate
对象

假设我在此
Temporal
参数中传递了
LocalDateTime
,该方法将引发异常


有没有办法找出传递的时态的类型?

我不知道您是如何转换到
LocalDate
的。我相信这一个有效

/**
 * @throws DateTimeException if the <code>Temporal</code> hasn’t got
 * enough supported fields for a <code>LocalDate</code>.
 */
public static LocalDate convertToLocalDate(Temporal t) {
    return LocalDate.from(t);
}
它可以接受
LocalDateTime

    LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Asia/Qyzylorda"));
    System.out.println("As LocalDate: " + convertToLocalDate(ldt));
刚才我运行这段代码时,得到了以下输出:

当然,它不适用于任何
时态

    convertToLocalDate(Year.of(2021));

向我们展示您的代码和异常消息,以及传入“LocalDateTime”时您希望发生的情况。我想您可以在这里找到答案
    convertToLocalDate(Year.of(2021));
Exception in thread "main" java.time.DateTimeException: Unable to obtain LocalDate from TemporalAccessor: 2021 of type java.time.Year
  at java.base/java.time.LocalDate.from(LocalDate.java:396)
  at com.ajax.Demo.convertToLocalDate(ConvertTemporalToLocalDate.java:18)
  at com.ajax.Demo.main(ConvertTemporalToLocalDate.java:25)