Collections.CheckedCollection(ICollection, Class) Método

Definição

Retorna uma exibição de typesafe dinamicamente da coleção especificada.

[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

Parâmetros

c
ICollection

a coleção para a qual uma exibição de typesafe dinamicamente deve ser retornada

type
Class

o tipo de elemento que c tem permissão para manter

Retornos

uma exibição de typesafe dinamicamente da coleção especificada

Atributos

Comentários

Retorna uma exibição de typesafe dinamicamente da coleção especificada. Qualquer tentativa de inserir um elemento do tipo errado resultará em uma imediata ClassCastException. Supondo que uma coleção não contenha elementos digitado incorretamente antes do momento em que uma exibição de typesafe dinamicamente é gerada e que todo o acesso subsequente à coleção ocorra por meio da exibição, é garantido que a coleção não pode conter um elemento digitado incorretamente.

O mecanismo genérico na linguagem fornece verificação de tipo de tempo de compilação (estático), mas é possível derrotar esse mecanismo com conversões desmarcadas. Normalmente, isso não é um problema, pois o compilador emite avisos em todas essas operações desmarcadas. No entanto, há momentos em que a verificação de tipo estático por si só não é suficiente. Por exemplo, suponha que uma coleção seja passada para uma biblioteca de terceiros e seja imperativo que o código da biblioteca não corrompa a coleção inserindo um elemento do tipo errado.

Outro uso de exibições de tipo dinâmico é a depuração. Suponha que um programa falhe com um ClassCastExceptionelemento , indicando que um elemento digitado incorretamente foi colocado em uma coleção parametrizada. Infelizmente, a exceção pode ocorrer a qualquer momento após a inserção do elemento errôneo, portanto, normalmente fornece pouca ou nenhuma informação sobre a origem real do problema. Se o problema for reproduzível, é possível determinar rapidamente sua origem modificando temporariamente o programa para encapsular a coleção com uma exibição de tipo dinâmico. Por exemplo, esta declaração:

{@code
                Collection<String> c = new HashSet<>();
            }

pode ser substituído temporariamente por este:

{@code
                Collection<String> c = Collections.checkedCollection(
                    new HashSet<>(), String.class);
            }

Executar o programa novamente fará com que ele falhe no ponto em que um elemento digitado incorretamente é inserido na coleção, identificando claramente a origem do problema. Depois que o problema for corrigido, a declaração modificada poderá ser revertida de volta para a original.

A coleção retornada não passa o hashCode e é igual a operações para a coleção de backup, mas depende Objectde 's equals e hashCode métodos. Isso é necessário para preservar os contratos dessas operações, caso a coleção de backup seja um conjunto ou uma lista.

A coleção retornada será serializável se a coleção especificada for serializável.

Como null é considerado um valor de qualquer tipo de referência, a coleção retornada permite a inserção de elementos nulos sempre que a coleção de backup faz.

Adicionado em 1.5.

Java documentação para java.util.Collections.checkedCollection(java.util.Collection<E>, java.lang.Class<E>).

Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.

Aplica-se a