Как указать несколько родителей в дженериках?

Необходимо сделать утилитный метод, который будет получать три параметра: 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 шт):

Автор решения: Sergei Buvaka

Вы не можете создавать в Дженериках несколько родителей. Если вы хотите указать несколько родителей то можно создать для этих родителей интерфейс - маркер. В этом интерфейсе не должно быть никаких методов. Вы просто всеми вашими классами (которые хотите указать в дженерике) реализуете данный интерфейс. И уже в самом дженерике указываете тип наследующий от этого интерфейса.

→ Ссылка