Можете ли вы запрограммировать коллекции Java на интерфейс и использовать Serializable?

StackOverflow https://stackoverflow.com/questions/1003926

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top