Можете ли вы запрограммировать коллекции Java на интерфейс и использовать Serializable?
-
05-07-2019 - |
Вопрос
Я прошел и запрограммировал всю свою логику уровня домена для интерфейсов. Теперь я обнаружил, что когда я хочу поместить данные в bean-компонент, bean-компонент не работает, потому что интерфейсы Collection (Collection, List, Set и т. Д.) Не реализуют Serializable.
Нужно ли проводить рефакторинг всего моего кода для использования конкретных типов или есть лучший способ действий здесь?
Решение
Если ваш класс реализует Serializable
и все его члены сериализуемы, тогда объект можно правильно сериализовать. Пример: р>
public class Person implements Serializable {
private String name;
private Collection<Integer> luckyNumbers = new ArrayList<Integer>();
}
Пока экземпляр luckyNumbers
сериализуем (например, ArrayList
), а его члены сериализуемы (в данном случае Integer
s) ), тогда объект будет сериализован.
Другие советы
Сериализуемый
является " маркером " интерфейс. Это не подходит для использования типа ссылки. Живите с небольшим количеством динамической типизации (хотя ничто не мешает вам использовать внешнюю статическую проверку типов).
Вы могли бы прыгать через обручи с помощью странных параметризованных универсальных методов, но это было бы крайне уродливо, а библиотеки Java этого не делают, так что вы все равно бы попали в ловушку.