Можете ли вы запрограммировать коллекции Java на интерфейс и использовать Serializable? - PullRequest
4 голосов
/ 17 июня 2009

Я прошел и запрограммировал всю свою логику уровня домена для интерфейсов. Теперь я обнаружил, что когда я хочу поместить данные в bean-компонент, bean-компонент не работает, поскольку интерфейсы Collection (Collection, List, Set и т. Д.) Не реализуют Serializable.

Нужно ли проводить рефакторинг всего моего кода для использования конкретных типов или есть лучший способ действий здесь?

Ответы [ 2 ]

5 голосов
/ 17 июня 2009

Если ваш класс реализует Serializable и все его члены сериализуемы, то объект может быть правильно сериализован. Пример:

public class Person implements Serializable {
    private String name;
    private Collection<Integer> luckyNumbers = new ArrayList<Integer>();
}

Пока экземпляр luckyNumbers сериализуем (например, ArrayList), а его члены сериализуемы (в данном случае Integer s), объект будет сериализован.

0 голосов
/ 17 июня 2009

Serializable является интерфейсом «маркер». Это не подходит для использования типа ссылки. Живите с небольшим количеством динамической типизации (хотя ничто не мешает вам использовать внешнюю статическую проверку типов).

Вы могли бы прыгать через обручи с помощью странных параметризованных универсальных методов, но это было бы крайне уродливо, а библиотеки Java этого не делают, так что вы все равно бы попали

...