Поиск ошибок — нестационарное несериализуемое поле экземпляра

#serialization #findbugs

#сериализация #поиск ошибок

Вопрос:

При запуске кода через FindBugs для сбора вонючих фрагментов я получаю
Ошибка: класс com.MyClass определяет нестационарное несериализуемое поле экземпляра, идентификатор шаблона someSet: SE_BAD_FIELD, тип: Se, категория: BAD_PRACTICE
Я знаю, что set не реализует сериализацию, но HashSet реализует, и именно поэтому он инициализируется тогда и там.Я думал, что это хорошая практика: (но, видимо, нет

 public class Myclass extends 
{ 
   @Transient
   private Set<String> someSet = new HashSet<String>();

        ...........
}
  

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

Ответ №1:

К сожалению, FindBugs недостаточно умен, чтобы распознать, что поле, определенное как Set, на самом деле является HashSet . Это недостаток findbugs. Здесь следует добавить проблему http://sourceforge.net/tracker/?group_id=96405amp;atid=614693