Collections.CheckedCollection(ICollection, Class) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Возвращает динамические типы представления указанной коллекции.
[Android.Runtime.Register("checkedCollection", "(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;", "")]
[Java.Interop.JavaTypeParameters(new System.String[] { "E" })]
public static System.Collections.ICollection CheckedCollection(System.Collections.ICollection c, Java.Lang.Class type);
[<Android.Runtime.Register("checkedCollection", "(Ljava/util/Collection;Ljava/lang/Class;)Ljava/util/Collection;", "")>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "E" })>]
static member CheckedCollection : System.Collections.ICollection * Java.Lang.Class -> System.Collections.ICollection
Параметры
Коллекция, для которой требуется возвращать динамическое представление типов
- type
- Class
Тип элемента, c который разрешено хранить
Возвращаемое значение
динамическое представление типы указанной коллекции
- Атрибуты
Комментарии
Возвращает динамические типы представления указанной коллекции. Любая попытка вставить элемент неправильного типа приведет к немедленной ClassCastExceptionпопытке. Если коллекция не содержит неправильно типизированных элементов до создания динамического представления типы, и что все последующие доступ к коллекции происходит через представление, гарантируется , что коллекция не может содержать неправильно типизированный элемент.
Механизм универсальных шаблонов на языке обеспечивает проверку типа (статического) времени компиляции, но можно победить этот механизм без проверки приведения. Как правило, это не проблема, так как компилятор выдает предупреждения обо всех таких незаверенных операциях. Однако существует время, когда только проверка статического типа недостаточно. Например, предположим, что коллекция передается в стороннюю библиотеку, и необходимо, чтобы код библиотеки не поврежден коллекции путем вставки элемента неправильного типа.
Другим использованием динамически типовых представлений является отладка. Предположим, что программа завершается сбоем, ClassCastExceptionуказывая, что неправильно типизированный элемент был помещен в параметризованную коллекцию. К сожалению, исключение может возникать в любое время после вставки ошибочного элемента, поэтому обычно он предоставляет мало или нет сведений о реальном источнике проблемы. Если проблема воспроизводима, можно быстро определить источник, временно изменив программу для упаковки коллекции с динамическим представлением типов. Например, это объявление:
{@code
Collection<String> c = new HashSet<>();
}
Может быть временно заменен этим:
{@code
Collection<String> c = Collections.checkedCollection(
new HashSet<>(), String.class);
}
Выполнение программы снова приведет к сбою в точке, когда неправильно типизированный элемент вставляется в коллекцию, четко определяя источник проблемы. После устранения проблемы измененное объявление может быть возвращено в исходное значение.
Возвращаемая коллекция не передает хэш-код и равен операциям через резервную коллекцию, но использует Objectequals методы и hashCode методы. Это необходимо для сохранения контрактов этих операций в том случае, если резервная коллекция является набором или списком.
Возвращаемая коллекция будет сериализуемой, если указанная коллекция является сериализуемой.
Так как null считается значением любого ссылочного типа, возвращаемая коллекция разрешает вставку пустых элементов всякий раз, когда выполняется резервная коллекция.
Добавлено в версии 1.5.
Части этой страницы — это изменения на основе работы, созданной и общей Project и используемых в соответствии с условиями, описанными в разделе "".