Конструктор должен выбросить IllegalArgumentException (нужно проверить перед этим ()) - PullRequest
0 голосов
/ 29 марта 2020

Я хочу, чтобы мой конструктор выдавал IllegalArgumentException с самоописанным сообщением об ошибке, когда оно вызывается с неверными аргументами.

public Card(int top, int left, int right) {
    this(TOP.get(top) + 3 * LEFT.get(left) + 9 * RIGHT.get(right));
}

Неправильные аргументы означают, что TOP.get(top) (соответственно, ВЛЕВО, ВПРАВО) имеет значение null, поскольку Map<Integer, Integer> не содержит такого элемента. Проблема в том, что я не могу сначала проверить это, поскольку this() не разрешает код раньше.

1 Ответ

2 голосов
/ 29 марта 2020

Добавьте вспомогательный метод, который проверяет ввод для вас:

public Card(int top, int left, int right) {
    this(helper(top, left, right));
}

private static int helper(int top, int left, int right) {
    if (TOP.get(top) == null || LEFT.get(left) == null || RIGHT.get(right) == null)) {  
        throw new IllegalArgumentException();
    }
    return TOP.get(top) + 3 * LEFT.get(left) + 9 * RIGHT.get(right);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...