Позвольте мне постараться ответить на ваши вопросы один за другим:
- не разрешать счетчику устанавливать значение -ve, используя minus1 (): для этого вы можете добавить такие условия, как
if(counter == 0)
throw new IllegalStateException("counter already 0"); // could be another exception type
- не разрешать счетчику устанавливать значение -ve с помощью setCounter (newCounter)
if(newCounter < 0)
throw new IllegalArgumentException("counter cannot be negative"); // could be another exception type
- логический тест отображает строку, равен ли счетчик:
не уверен, что если вы пытаетесь переопределить метод Object # equals, значит, ваша сигнатура метода неверна и это может быть
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Counter that = (Counter) o;
return counter == that.counter;
}
Вы можете использовать какой-нибудь регистратор для печати строки