Имеет ли смысл устанавливать session = null после session.close ()? - PullRequest
0 голосов
/ 03 сентября 2018

рассмотрим этот бит кода:

public void foo(){
       try{
        //some cool statements here
      }
      finally {
         if(session != null){
             session.close();
             sesssion = null;
          }
     }
   }

Поскольку сессия закрыта, будет ли значение, назначенное для сессии, иметь смысл? Пожалуйста, предоставьте некоторые ценные идеи.

Ответы [ 2 ]

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

Установка переменных на нуль может быть полезна в сценариях, когда сами объекты стали бесполезными, в этом примере это закрытый сеанс. Такие объекты обычно документируют, что после вызова close или аналогичного метода все дальнейшие операции с этим объектом завершатся неудачно, например, бросая IllegalStateException. В этих случаях, возможно, имеет смысл стереть такой экземпляр, особенно если другие части кода ожидают и проверяют наличие нулевого экземпляра в качестве признака «нет соединения».

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

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

Установка локальной переменной на null не нужна, то есть является частью рекомендаций CERT Oracle Secure Coding Standard

Установка локальных ссылочных переменных на null для «помощи сборщику мусора» не нужна. Это добавляет беспорядок в код и может усложнить обслуживание. Java-компиляторы точно в срок (JIT) могут выполнять эквивалентный анализ жизнеспособности, и большинство реализаций делают это.

...