Учтите это, когда generateString
делает много вещей для генерации строки из someParam
:
Objects.requireNonNull(obj, generateString(someParam));
Аргументы оцениваются с нетерпением в Java, что означает, что generateString
будет оцениваться до вызова requireNonNull
. Поэтому он вычисляется независимо от того, является ли obj
нулевым или нет.
Вы можете решить эту проблему, изменив ее на:
Objects.requireNonNull(obj, () -> generateString(someParam));
В этом случае generateString
будет вызываться только в том случае, если obj
фактически было нулевым. Это эффективнее, когда generateString
дороже, чем создание Supplier
-объекта.
Вам следует просто использовать обычный не-лямбда-метод, если ваш параметр String является просто литералом, например:
Objects.requireNonNull(obj, "obj was null!");