Collections.CheckedCollection(ICollection, Class) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Restituisce una visualizzazione typesafe dinamicamente dell'insieme specificato.
[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
Parametri
raccolta per la quale deve essere restituita una visualizzazione typesafe in modo dinamico
- type
- Class
il tipo di elemento che c è autorizzato a contenere
Valori restituiti
visualizzazione typesafe dinamica della raccolta specificata
- Attributi
Commenti
Restituisce una visualizzazione typesafe dinamicamente dell'insieme specificato. Qualsiasi tentativo di inserimento di un elemento del tipo errato comporterà un'immediata ClassCastException. Supponendo che una raccolta non contenga elementi tipizzato in modo non corretto prima della generazione di una visualizzazione typesafe in modo dinamico e che tutto l'accesso successivo alla raccolta venga eseguito tramite la visualizzazione, è garantito che la raccolta non possa contenere un elemento tipizzato in modo non corretto.
Il meccanismo generics nel linguaggio fornisce il controllo dei tipi in fase di compilazione (statico), ma è possibile sconfiggere questo meccanismo con cast non controllati. In genere questo non è un problema, perché il compilatore genera avvisi su tutte queste operazioni deselezionate. Esistono tuttavia momenti in cui il controllo dei tipi statici da solo non è sufficiente. Si supponga, ad esempio, che una raccolta venga passata a una libreria di terze parti ed è fondamentale che il codice della libreria non corrompa la raccolta inserendo un elemento del tipo errato.
Un altro uso di viste typesafe in modo dinamico è il debug. Si supponga che un programma abbia esito negativo con un ClassCastExceptionoggetto , che indica che un elemento tipizzato in modo non corretto è stato inserito in una raccolta con parametri. Sfortunatamente, l'eccezione può verificarsi in qualsiasi momento dopo l'inserimento dell'elemento errato, quindi in genere fornisce poche o nessuna informazione per la vera origine del problema. Se il problema è riproducibile, è possibile determinarne rapidamente l'origine modificando temporaneamente il programma per eseguire il wrapping della raccolta con una visualizzazione typesafe in modo dinamico. Ad esempio, questa dichiarazione:
{@code
Collection<String> c = new HashSet<>();
}
può essere sostituito temporaneamente da questo:
{@code
Collection<String> c = Collections.checkedCollection(
new HashSet<>(), String.class);
}
L'esecuzione del programma di nuovo causerà un errore nel punto in cui un elemento digitato in modo non corretto viene inserito nella raccolta, identificando chiaramente l'origine del problema. Una volta risolto il problema, la dichiarazione modificata potrebbe essere ripristinata all'originale.
La raccolta restituita non passa il codice hash e le operazioni di uguale a all'insieme di backup, ma si basa sui Objectmetodi e hashCode .equals Ciò è necessario per mantenere i contratti di queste operazioni nel caso in cui la raccolta di backup sia un set o un elenco.
La raccolta restituita sarà serializzabile se la raccolta specificata è serializzabile.
Poiché null è considerato un valore di qualsiasi tipo riferimento, la raccolta restituita consente l'inserimento di elementi Null ogni volta che la raccolta di supporto esegue.
Aggiunto nella versione 1.5.
per java.util.Collections.checkedCollection(java.util.Collection<E>, java.lang.Class<E>).
Le parti di questa pagina sono modifiche basate sul lavoro creato e condiviso dalla e usati in base ai termini descritti in Creative License 2.5 Attribution License.