То, почему AbstractCollection не реализует, равняется ()?

Entity Framework не поддерживает коллекции примитивных типов. Вы можете создать объект (который будет сохранен в другой таблице) или выполнить некоторую строковую обработку, чтобы сохранить ваш список в виде строки и заполнить список после того, как объект материализуется.

7
задан Michel 5 December 2008 в 03:12
поделиться

3 ответа

На контракт Collection#equals() , там не общего назначения, равняется () методам для Collection, с, и таким образом AbstractCollection не может обеспечить тот.

Примечание, которое HashMap$Values не является ни Набором, ни Списком, таким образом затруднительным положением и в некотором смысле причиной, которую это не поддерживает equals().

6
ответ дан 7 December 2019 в 01:28
поделиться

И AbstractList и AbstractSet расширяют AbstractCollection, и у них есть различные поведения для их, равняется () методам, определенным интерфейсами Список и Набор . Интерфейс для Набор говорит:

, В то время как интерфейс Collection не добавляет соглашений к общему контракту для Object.equals, программисты, которые реализуют интерфейс Collection "непосредственно" (другими словами, создают класс, который является Набором, но не является Набором или Списком), должны проявить заботу, если они принимают решение переопределить Object.equals.

, Таким образом, AbstractCollection не должен определенно переопределять, равняется (). Однако я действительно не знаю, почему HashMap$Values не реализовал бы, равняется () сам.

4
ответ дан 7 December 2019 в 01:28
поделиться

Я не уверен, старается ли thatt's официальная причина, но AbstractCollection не добавлять семантические ограничения на потенциальные подклассы. Семантика равенства определяется природой конкретной структуры данных наследования, и в особенности на основе того, заказана ли Ваша структура и позволяет ли это дубликаты.

, Например, Рассмотрите TreeSet, LinkedList, Сумку, и т.д.

BTW, Относительно кода, который Вы отправили, каков фактический тип того, что возвращается значениями? Это должно быть подклассом с конкретной реализацией.. Если Ваша карта пуста при выполнении этого кода возможно, что Вы закончили бы с чем-то, что не считает два пустых множества равными.

0
ответ дан 7 December 2019 в 01:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: