У меня следующий вопрос об обобщении Java
У меня есть следующий родовой класс, который можно набросать как:
public class MyClass<T> {
AnotherClass<T> another;
OtherClass<T> other;
...
}
где ...
представляет код, который не имеет отношения к делу.
Для класса MyClass<T>
не так важно, какой именно тип T
(на данный момент), но для обоих:
AnotherClass<T>
OtherClass<T>
является абсолютно необходимым , что такое универсальный тип, и решения будут приниматься во время выполнения на его основе.
Исходя из этого, тип T
не является полностью произвольным, он может быть либо экземпляром иерархии классов T_1
, либо иерархией классов T_2
.
Как определено для класса, тип T
эквивалентен Object
, но я знаю, что эквивалентен либо T_1
, либо T_2
Между сущностями T_1
и T_2
нет деловых отношений, поэтому я не делаю:
public interface BaseT { ... }
public class T_1 implements BaseT { ... }
public class T_2 implements BaseT { ... }
public class MyClass<T extends BaseT>
Разъяснение того, зачем использовать дженерики, если они не связаны:
Я определяю (пытаюсь) универсальный класс для обоих, потому что даже если они явно не связаны, существует неявное отношение, потому что и T_1
, и T_2
могут и будут ассоциироваться с сущностью, представленной в MyClass
T
будет одинаковым для MyClass
, AnotherClass
и OtherClass
, так что в экземпляре будут только T_1
или T_2
, но никогда оба одновременно.
У меня вопрос, какие альтернативы у меня есть здесь, кроме разработки
интерфейс для MyClass
и реализовать его для T_1
и T_2
?.
Могу ли я достичь чего-то вроде MyClass<T extends T_1 or T_2>
?
С уважением