Как масштабно считать нули в equals ()? - PullRequest
0 голосов
/ 20 сентября 2018

Чтобы избежать исключения нулевого указателя в моем equals(), я должен рассмотреть возможность одного или нескольких нулей.

Существует ли масштабируемый способ для рассмотрения нулей?Следующий код станет довольно уродливым, если я добавлю больше параметров типа.

  public boolean equals(Pair<T, U> p) {

    boolean firstIsEqual, secondIsEqual;

    if (p.getFirst()==null) {
      firstIsEqual = first == null;
    }
    else {
      firstIsEqual = (first!=null) && (first.equals(p.getFirst()));
    }

    // copy-paste...
    if (p.getSecond()==null) {
      secondIsEqual = second == null;
    }
    else {
      secondIsEqual = (second!=null) && (second.equals(p.getSecond()));
    }

    return (firstIsEqual && secondIsEqual);
  }

1 Ответ

0 голосов
/ 20 сентября 2018

Единственное решение, которое масштабируется:

  • для использования библиотеки типа Lombok, которая предоставляет средства для генерации таких методов на этапе компиляции
  • для использования встроенной генерации кодаособенности вашей IDE

Серьезно: никто в реальном мире не пишет методы equals / hashCode вручную.Вы используете инструмент и указываете, какие поля следует использовать в вычислениях.Если поле добавлено, вы должны помнить о необходимости повторного создания методов.

Или вы используете язык jvm, который поддерживает классы данных, такие как Kotlin или Scala.

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