Java: как эффективно проверять наличие нулевых указателей

Есть несколько шаблонов для проверки того, присвоено ли параметру метода нулевое значение.

Во-первых, классический. Это обычное дело в самодельном коде и очевидно для понимания.

public void method1(String arg) {
  if (arg == null) {
    throw new NullPointerException("arg");
  }
}

Во-вторых, вы можете использовать существующую структуру. Этот код выглядит немного лучше, потому что он занимает только одну строку. Обратной стороной является то, что он потенциально вызывает другой метод, который может замедлить выполнение кода, в зависимости от компилятора.

public void method2(String arg) {
  Assert.notNull(arg, "arg");
}

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

public void method3(String arg) {
  arg.getClass();
}

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

Какую проверку вы выполняете. предпочитаете, и почему?

23
задан Roland Illig 25 January 2011 в 15:39
поделиться