Как обрабатывать «Непрерывное несериализуемое поле экземпляра Findbugs в сериализуемом class »?

Рассмотрим класс ниже. Если я запустил Findbugs против него, это выдаст мне ошибку («Непрерывное несериализуемое поле экземпляра в сериализуемом классе») в строке 5, но не в строке 7.

1 public class TestClass implements Serializable {
2
3  private static final long serialVersionUID = 1905162041950251407L;
4
5  private Set<Integer> mySet;      // Findbugs error
6
7  private HashSet<Integer> myOtherSet;
8
9 }

Это верно, потому что java.util.Set никогда не реализует Serializable в своей иерархии и java.util.HashSet. Однако лучше всего кодировать интерфейсы, а не конкретные реализации.

Как мне лучше всего справиться с этим?

Я могу добавить @Suppresswarnings (justification = "No bug", values ​​= "SE_BAD_FIELD") в строке 3 . У меня довольно много наборов и списков в моем реальном коде, и я боюсь, что это слишком сильно засоряет мой код.

Есть ли способы лучше?

53
задан Paul Croarkin 2 September 2015 в 11:31
поделиться