Рассмотрим следующий класс. Если я запустил 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. У меня довольно много наборов и списков в моем фактическом коде, и я боюсь, что это пометит мой код слишком много.
Есть ли лучшие способы?