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