У меня есть класс контейнера и предмета, на который действует мир. Я намереваюсь, чтобы Предмет был в инвентаре Контейнера (Сбор). Большинство предметов являются подвижными (их можно поменять местами от одного контейнера к другому); другие предметы являются заметными. Каждый элемент определяет метод, isMovable(), который возвращает true, если элемент является подвижным, а false в противном случае. Когда я пишу метод в контейнере, чтобы поменять элемент на другой контейнер, как лучше всего обрабатывать случай, когда этот метод swapItem() вызывается в неподвижном элементе?Метод обработки Вызов недействительного объекта
Вот мой код до сих пор:
**
* Used by the World class to swap the an {@link Item} between this
* container and another (the destination).
*
* @param item The Item to be swapped to the destination
* @param dest The destination (i.e. recipient) container
*/
public final void swapItem(Item item, Container dest){
if (item.isTakeable()){
this.f_contents.remove(item);
dest.getContents().add(item);
} else {
throw new IllegalStateException();
}
}
Как вы можете видеть, что я решил бросить исключение, которое я могу поймать, если класс World называет обмен на неподвижный предмет. Исключено ли исключение IllegalStateException в этом случае? Было бы лучше просто проверить isTakeable() в методе класса World перед вызовом метода swapItem()?
Спасибо для обратной связи! –