Ciao.
Questa è la Lulu romana.
E bentornato.
Quindi non abbiamo finito con i generici, che è stato un capitolo piuttosto lungo.
È stata una copertura molto completa.
E ora andiamo avanti e rivediamo rapidamente tutte le funzionalità importanti di cui abbiamo discusso in questo capitolo.
Si può ricordare che la motivazione principale per l'introduzione dei generici era quella di garantire la sicurezza dei tipi in fase
di compilazione prima dell'introduzione dei generici in Java 5.
Esisteva sempre il rischio di incorrere in eccezioni di runtime correlate alla sicurezza dei tipi.
Quindi generics è puramente un concetto di tempo di compilazione e non ci sono generici in fase di runtime.
Puoi ricordare questo esempio sin dalla prima lezione e diciamo che è così che una classe
e i pre generici sembrerebbero come la classe store qui può essere usata per archiviare e recuperare qualsiasi oggetto.
Quindi il parametro del metodo del metodo set è di tipo oggetto il tipo di getter
sottoscritto è anche fuori oggetto come allora abbiamo lo sviluppatore John che lancia un'istanza morta dal barattolo del pacchetto oscuro.
E recupera anche lo stesso oggetto in un secondo momento e un luogo in cui viene lanciato per
convertirlo da un oggetto ad oggi poiché il metodo restituisce un oggetto successivo Anita utilizza la stessa istanza memorizzata che John ha creato e
ricerca l'oggetto morto archiviato ma imposta un'istanza di data da Joe non hai creato un pacchetto piuttosto che da
Java, non un pacchetto di salvataggio e in seguito John ha ottenuto ancora una volta la stessa istanza memorizzata e recupera
l'oggetto Date.
E applica anche il cast di date da Java non SDL poiché era quello che aveva usato in precedenza
durante la memorizzazione dell'istanza morta e ciò darebbe un'eccezione di cast di classe in fase di esecuzione poiché l'oggetto data ora proviene da Java non
da Udall che non può battere l'incantatore al punto Java oscurato o fatto Java è un linguaggio di tipo sicuro quindi è stata
generata questa eccezione.
Quindi i progettisti del linguaggio hanno voluto identificare questo tipo di problemi al momento della compilazione stessa e quindi i
generici introdotti, quindi ecco la stessa classe di negozio ma con i generici qui digita il parametro da usare che accede anche
a quel tipo per il parametro del metodo nel metodo set e anche come tipo di ritorno
per ottenere Lui è anche il tipo per esempio variabile a ed ecco John.
E si chiama doppio uso di generici sul suo codice non si compila nemmeno in quanto non può impostare un lavoro o no.
Pensi che Dio abbia archiviato l'istanza può prendere solo un'istanza morta da Java e non dalla scuola come è
stato specificato quando è stato creato da John.
Ora un altro utente Raj può utilizzare lo stesso class store generico per archiviare un'istanza di libro che può solo
archiviare e recuperare un'istanza di libro o uno dei suoi sottotipi, quindi con generici otteniamo la sicurezza del tipo di tempo di
compilazione e come aggiunta al codice è anche più pulito in quanto non è necessario applicare alcun
compilatore CAS esplicito, ma per noi il codice è anche espressivo poiché l'intenzione dei programmatori è molto chiara come
archiviare l'istanza morta o un codice di istanza del libro è anche generico nel senso che il codice client può archiviare
qualsiasi tipo di dati come libro o data.
Naturalmente ciò che può essere limitato usando il limite dei parametri, per lo più generici, si incontrano solo classi
di tipo contenitore bit che vengono visualizzate con il framework delle raccolte.
Potrebbe non essere molto comune per te scrivere classi così generiche, dipende solo dal tuo progetto, quindi tipi
generici freeware quando possibile come questo elemento da Java affettivo come ma i programmatori inesperti possono ancora
creare tipi di strade compromettendo il beneficio della genetica il solo compilatore tipo di sicurezza.
Quindi questo articolo vuole che non lo facciamo.
Uno dei motivi per cui gli sviluppatori potrebbero essere tentati di usare pipe brevi soprattutto per i parametri del
metodo è perché non sanno o non si preoccupano di ciò che l'argomento USA potrebbe archiviare in un tale tipo di situazione.
Invece di usare un tipo errato si può usare un tipo di carattere jolly senza limiti che offre il vantaggio
della sicurezza del tipo di tempo di compilazione che non si ottiene con il tipo di roccia rossa. Ecco un esempio di utilizzo di un carattere
jolly senza limiti.
Qui possiamo passare un elenco contenente qualsiasi tipo di elemento e senza dubbio il carattere jolly può essere
utilizzato solo come argomento pipe non come parametro.
Successivamente la domanda è: perché non usare semplicemente l'oggetto come argomento di tipo anziché un carattere jolly, poiché l'oggetto è la
superclasse di tutte le classi e quindi può essere assegnato a qualsiasi oggetto.
Ma la limitazione con l'uso dell'oggetto come argomento di tipo è che puoi assegnare solo un'istanza che ha anche oggetto come
argomento di tipo che è che non puoi assegnare qualcosa come un archivio di stringhe e sappiamo che ciò è dovuto a proprietà invarianti che
potrebbero generare un eccesso generico che aiuta anche a compilare la sicurezza del tipo di tempo, ma con
la carta bianca possiamo assegnare un'istanza di qualsiasi tipo che è memorizzata da una stringa o un archivio di numeri interi
o qualsiasi altra cosa.
Quindi questo è un vantaggio dell'uso di un jolly illimitato o di uno che utilizza l'oggetto come argomento di tipo.
Ed ecco il libro delle proprietà invariante è una scorta di segnalibro ma l'elenco dei libri non è un sottotipo di questa
roba.
Aggiungi segnalibro per lo stesso tipo di argomento.
Eredità di tipi genetici.
Quindi, se l'argomento tipo è un segnalibro, un idealista o un segnalibro può essere assegnato al suo elenco o segnalibro come
nostro elenco.
È questo un tipo di elenco può essere un po 'confuso, ma tieni presente che nelle varianti i tipi di argomenti
sono diversi.
Questo è stato l'esempio che abbiamo visto sul perché è necessario l'invariante.
Questo esempio spiega cosa succede se è consentito l'invariante con i generici.
Qui stiamo passando un elenco di oggetti come argomento ma nel metodo un oggetto filmato viene aggiunto a
questo elenco.
E ciò potrebbe comportare un'eccezione di runtime poiché il codice di richiamo si aspetta sempre che
l'elenco contenga solo oggetti libro.
Quindi, nelle varianti, è necessario sapere cosa discuteremo in seguito di come l'invariante sia limitato, sebbene in alcuni
scenari innocui, sebbene garantisca la sicurezza del tipo di tempo di compilazione.
Un esempio del metodo di visualizzazione che prenderebbe un elenco di segnalibri su una visualizzazione più semplice.
Quindi nessuna intenzione di inserire un tipo errato di elementi, ma purtroppo a causa della varianza non possiamo passare
né un elenco fuori libro o un elenco di più noi in questo caso, quindi stanno lavorando su scenari
fossili è usare un jolly accoppiato o un generico con un parametro di tipo bond ma dobbiamo garantire la sicurezza del tipo 2
e quindi il compilatore ha questa limitazione su un jolly rosso con limite superiore.
Non possiamo invocare metodi che utilizzano parametri di tipo a livello di classe con alcun argomento tranne nessuno.
Altrimenti c'è sempre la possibilità di invocare tali metodi e dati passati che potrebbero rompere i tubi.
Quindi se invochiamo tali metodi con qualcosa di diverso da null otteniamo un errore del compilatore per quanto riguarda invariante.
Abbiamo anche discusso dello scenario in cui vorremmo consumare dati ed essere ancora in grado
di analizzare diversi argomenti, abbiamo detto che per questo è possibile utilizzare un jolly con legame inferiore, ad esempio
qui l'aggregato del metodo utilizza un tipo di jolly con legame inferiore per aggregare i dati tuttavia può essere invocato.
È un elenco di segnalibri o un elenco di oggetti che l'oggetto è il super tipo di segnalibro ma non può essere
invocato con un elenco di alcuni tipi di segnalibro e qui c'è la restrizione del compilatore che potrebbe fare in modo che un tipo di carattere
jolly legato inferiore agisca come consumatore dei dati e allo stesso tempo garantisce che la sicurezza del tipo di tempo
di compilazione non sia compromessa.
Quindi la regola dice che possiamo invocare metodi che usano solo il parametro di tipo di classe solo se l'argomento
è fuori dal tipo di legame più basso o da uno dei suoi sottotipi e discutiamo anche di questo importante e interessante articolo
commenti virtuali usando i caratteri jolly legati per aumentare la flessibilità dell'API.
Indica che se questo tipo di parametro produce dati, utilizza l'eccellenza e se il tipo di parametri consuma dati,
usa super se il tipo di parametro produce dati ma non conosce o si preoccupa dell'argomento di tipo usato jolly illimitato.
Tieni presente che il carattere jolly non associato è lo stesso del limite superiore e del
carattere jolly ma con l'oggetto come legame invisibile se i parametri digitano produttori e consumano dati, devi utilizzare la corrispondenza esatta.
Inoltre puoi ricordare il testo mnemonico e abbiamo anche alcune restrizioni che vanno di pari passo con i generici.
Uno di questi è che il parametro del tipo di livello di classe non può essere utilizzato in un contesto statico.
Se il nostro metodo statico richiede genericità, allora possiamo definire un metodo generico.
Un'altra restrizione è che l'argomento type non può essere a.
Su generici all'arresto, inoltre, non si mescolano quando a causa di problemi di sicurezza del tipo e tale tipo di sovraccarico del
metodo non funziona con i metodi finirebbe con la stessa firma dopo la cancellazione del tipo.
Ricorda che la cancellazione del tipo aveva diffuso l'interoperabilità con il codice legacy.
Tieni presente che con la cancellazione del tipo quel parametro di tipo verrebbe sostituito con l'oggetto o
la bomba più a sinistra se esistessero una o più bombe e infine ringraziamo il nostro fantastico compilatore java per aver fatto tutte queste grandi cose
per noi, assicura la sicurezza del tipo di tempo di compilazione nella classe di ricerca esegue l'inferenza del tipo
e infine digita la cancellazione.
Making crea genera un concetto di tempo puramente compilativo.
Quindi questa è la fine di questo capitolo e spero che ti sia piaciuto conoscere i generici.
E come menzionato nella lezione introduttiva, se necessario, per rivedere i concetti dei generici una volta alla settimana o un paio
di settimane fino a quando non si è completamente a proprio agio con come funziona.
Detto questo grazie e arrivederci per ora.