Это изменяемая статика, которая, как скажут вам FindBugs, очень непослушна. Не изменяйте статику и не позволяйте другому коду делать то же самое. Как минимум, поле должно быть закрытым.:
(Параноики, такие как я, могли бы чувствовать себя более спокойно, если бы это было завернуто в Collections.unmodifiableSet - тогда это можно было бы даже сделать общедоступным.)
(* Чтобы немного подробнее рассказать о бренде, в collections API, как и ожидалось, по-прежнему отсутствуют неизменяемые типы коллекций, а синтаксис, на мой вкус, по-прежнему слишком подробный.)
if ( ArrayUtils.contains( fieldsToInclude, "id" ) ) { // Do some stuff. }
Ответ 4
Просто реализуйте это вручную:
publicstatic <T> booleancontains(final T[] array, final T v) { for (final T e : array) if (e == v || v != null && v.equals(e)) returntrue;
returnfalse; }
Улучшение:
Условие v != null является постоянным внутри метода. Оно всегда принимает одно и то же логическое значение во время вызова метода. Итак, если входные данные array большие, эффективнее оценить это условие только один раз, и мы можем использовать упрощенное / более быстрое условие внутри for цикла на основе результата. Улучшенный contains() метод:
publicstatic <T> booleancontains2(final T[] array, final T v) { if (v == null) { for (final T e : array) if (e == null) returntrue; } else { for (final T e : array) if (e == v || v.equals(e)) returntrue; }