Как бы я создал коллекцию, которая бы обеспечивала отсутствие в ней двух одинаковых типов? - PullRequest
0 голосов
/ 01 мая 2018

Я хочу создать набор или коллекцию, в которой есть набор элементов. Каждый элемент реализует интерфейс WeaponAccessory. Однако я не хочу два предмета с одинаковым типом WeaponAccessory. Поэтому в списке никогда не должно быть двух подавителей или двух расширенных журналов.

Чтобы сделать это понятнее. Допустим, у класса M16 есть переменная экземпляра коллекции WeaponAccessories. Как я могу гарантировать, что в этот список не войдут два объекта одного типа (два подавителя или два расширенных журнала)? Все аксессуары (suppressor, extended mags..etc.) Являются классами, которые реализуют WeaponAccessory. So you can create a set or list of WeaponAccessory, но я хочу, чтобы в нем были разные типы.

Как мне написать это?

1 Ответ

0 голосов
/ 01 мая 2018

Похоже, вы хотите перечисление вместо интерфейса, который даст вам возможность объединить это в набор с гарантированной уникальностью.

public enum WeaponAccessory {
    EXTENDED_MAGAZINE,
    SUPPRESSOR,
    THUMB_GRIP,
    ANGLED_GRIP
}

Использование этого становится тривиальным вопросом добавления определенного типа аксессуаров для оружия, которое вы хотите, к любому оружию, которое вы пожелаете. Я оставляю эту часть в качестве упражнения для читателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...