Я работаю с интерфейсом, который принимает параметр типа:
public interface Container<T>
Теперь у меня может быть класс как таковой, который его реализует:
public class EnumContainer implements Container<Enum>
Но теперь предположим, что мне нужен Container
для перечислений, который реализует интерфейс с именем Position
:
public interface Position {
String getAbbreviation();
String getDescription();
}
Как я могу определить PositionEnumContainer
? Я пробовал это, но это ошибка времени компиляции:
public class PositionEnumContainer implements Container<Enum & Position>
Я не хочу делать PositionEnumContainer
универсальным, например:
public class PositionEnumContainer <T extends Enum<T> & Position> implements Container<T>
Enum<T>
? - person dpr   schedule 22.01.2020Enum<T>
, чтобы указать, что T является Enum типа T. Enum само по себе является универсальным. - person user8297969   schedule 22.01.2020public class PositionEnumContainer implements Container<Enum>, Position
? Потому что ваш класс реализует интерфейс Container и интерфейс Position? Вот как работают интерфейсы: вы перечисляете каждый интерфейс, реализуемый вашим классом, через запятую. - person Mike 'Pomax' Kamermans   schedule 22.01.2020PositionEnumContainer
реализовывалPosition
. Скорее, я хочу, чтобыContainer
содержал объекты как типаEnum
, так и типаPosition
. - person user8297969   schedule 22.01.2020class PositionedEnum implements Enum, Position
, а затем сделайте что-то, что реализуетContainer<PositionedEnum>
. Обобщение — это определение одной вещи, которая, как вы обещаете, будет использоваться, а не одной из нескольких совершенно несовместимых вещей. - person Mike 'Pomax' Kamermans   schedule 22.01.2020