Как указать несколько родителей в дженериках?
Необходимо сделать утилитный метод, который будет получать три параметра: time, startTime, endTime и при помощи compareTo() проверять, что time находится в диапазоне startTime и endTime.
Все три параметра могут быть экземплярами одного из трёх классов: LocalDate, LocalTime или LocalDateTime.
Как должен выглядеть дженерик для такого метода? В данный момент я смог сделать такую сигнатуру:
public static <E extends Temporal, T extends Comparable<E>> boolean isBetweenHalfOpen(T time, E startTime, E endTime)
Существует ли какая-либо возможность непосредственно указать все три класса, экземплярами которых могут быть передаваемые в метод параметры? Мне нужно что-то такое: <T extends LocalDate || T extends LocalTime || T extend LocalDateTime>. Я понимаю, что такой синтаксис невозможен в Java, но суть, надеюсь, выразил.
Ответы (1 шт):
Вы не можете создавать в Дженериках несколько родителей. Если вы хотите указать несколько родителей то можно создать для этих родителей интерфейс - маркер. В этом интерфейсе не должно быть никаких методов. Вы просто всеми вашими классами (которые хотите указать в дженерике) реализуете данный интерфейс. И уже в самом дженерике указываете тип наследующий от этого интерфейса.