2

以下のような Java メソッドがあります。

private static boolean isDateBetweenRange(DataSet obj, MyClass dataSource, ConditionContext context) {
    FilterContext fc = dataSource.getData();

    LocalDate dateFieldToCheck = obj.getDate(fc.getDateField()).toInstant()
                                   .atZone(ZoneId.systemDefault()).toLocalDate();
    LocalDate minDate = fc.getMinDateValue();
    LocalDate maxDate = fc.getMaxDateValue();

    if (minDate == null || maxDate == null) {
        minDate = context.getStartDate().toInstant().atZone(ZoneId.systemDefault())
                    .toLocalDate();
        maxDate = context.getEndDate().toInstant().atZone(ZoneId.systemDefault())
                    .toLocalDate();
    }

    boolean result = (dateFieldToCheck.isAfter(minDate) || dateFieldToCheck.isEqual(minDate))
            && (dateFieldToCheck.isBefore(maxDate) || dateFieldToCheck.isEqual(maxDate));

    return result;
}

私も同じロジックを作りたいですLocalDateTimeLocalDateTimeメソッドをオーバーロードすると、まったく同じコードになります。

ジェネリックやその他のメカニズムを使用LocalDateして動作するようにメソッドをジェネリックにするにはどうすればよいですか?LocalDateTime

私が持っているタイプに基づいて、context.getXXXDate()... toLocalDate()または共通のコードを作成するにはどうすればよいですか?toLocalDateTime()

4

3 に答える 3