Вызов equals
для любого объекта, левая сторона которого null
, вызовет NullPointerException
. Правая сторона не будет бросать, если это null
. Таким образом, в этом случае вы можете избежать этого, поменяв местами стороны:
if(target.equals(ans))
Предполагая, что target
никогда не бывает null
, конечно (я предполагаю, что это не так). Вы можете обеспечить это, добавив охранник в начало метода.
if(target == null) throw new NullPointerException("Method parameter `target` should not be null")
Это по той же причине, по которой вы обычно помещаете константы String
в с левой стороны, так как вам не нужно беспокоиться о том, что это null
. Например,
if("MyAmazingConstant".equals(maybeNullVariable))
Или
const String MY_AMAZING_CONSTANT = "MyAmazingConstant"
if(MY_AMAZING_CONSTANT.equals(maybeNullVariable))
Или вы можете использовать что-то вроде StringUtils
из Apache Commons , которое имеет множество нулевых безопасных равенств операторы. Это также будет поддерживать другие крайние случаи (например, обе стороны будут null
).
Должен ли ans
быть null
- это другой вопрос. Поскольку вы получаете значение Queue
с помощью метода poll
, это означает, что Queue
в это время пусто.