Collections.CheckedCollection(ICollection, Class) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve una vista de typesafe dinámicamente de la colección 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
la colección para la que se va a devolver una vista de typesafe dinámicamente
- type
- Class
el tipo de elemento que c se permite contener
Devoluciones
una vista de typesafe dinámicamente de la colección especificada
- Atributos
Comentarios
Devuelve una vista de typesafe dinámicamente de la colección especificada. Cualquier intento de insertar un elemento del tipo incorrecto dará como resultado un resultado inmediato ClassCastException. Suponiendo que una colección no contiene elementos con tipo incorrecto antes de la hora en que se genera una vista de typesafe dinámicamente y que todo el acceso posterior a la colección tiene lugar a través de la vista, se garantiza que la colección no puede contener un elemento con tipo incorrecto.
El mecanismo genérico del lenguaje proporciona comprobación de tipos en tiempo de compilación (estático), pero es posible derrotar este mecanismo con conversiones no desactivadas. Normalmente, esto no es un problema, ya que el compilador emite advertencias en todas estas operaciones no activadas. Sin embargo, hay ocasiones en las que la comprobación de tipos estáticos por sí sola no es suficiente. Por ejemplo, supongamos que una colección se pasa a una biblioteca de terceros y es imperativo que el código de biblioteca no dañe la colección insertando un elemento del tipo incorrecto.
Otro uso de vistas de typesafe dinámicamente es la depuración. Supongamos que se produce un error en un programa con un ClassCastException, que indica que un elemento con tipo incorrecto se ha colocado en una colección parametrizada. Desafortunadamente, la excepción puede producirse en cualquier momento después de insertar el elemento erróneo, por lo que normalmente proporciona poca o ninguna información sobre la fuente real del problema. Si el problema es reproducible, uno puede determinar rápidamente su origen modificando temporalmente el programa para encapsular la colección con una vista de typesafe dinámicamente. Por ejemplo, esta declaración:
{@code
Collection<String> c = new HashSet<>();
}
puede reemplazarse temporalmente por este:
{@code
Collection<String> c = Collections.checkedCollection(
new HashSet<>(), String.class);
}
Al volver a ejecutar el programa, se producirá un error en el punto en el que se inserta un elemento con tipo incorrecto en la colección, identificando claramente el origen del problema. Una vez corregido el problema, la declaración modificada se puede revertir al original.
La colección devuelta no pasa hashCode y es igual a las operaciones a través de la colección de respaldo, pero se basa en Objectlos equals métodos y hashCode . Esto es necesario para conservar los contratos de estas operaciones en caso de que la colección de respaldo sea un conjunto o una lista.
La colección devuelta se serializará si la colección especificada es serializable.
Puesto null que se considera un valor de cualquier tipo de referencia, la colección devuelta permite la inserción de elementos NULL siempre que lo haga la colección de respaldo.
Agregado en 1.5.
Las partes de esta página son modificaciones basadas en el trabajo creado y compartido por el Android y se usan según los términos descritos en creative Creative Commons 2.5 Attribution License.