Come usare la classe in Java?
Tutto quello che sappiamo è ” Tutte le istanze di una qualsiasi classe condividono lo stesso java.lang.Oggetto di classe di quel tipo di classe”
ad esempio)
Student a = new Student();Student b = new Student();
Quindia.getClass() == b.getClass()
è true.
Ora assume
Teacher t = new Teacher();
senza generici è possibile il seguente.
Class studentClassRef = t.getClass();
Ma questo è sbagliato ora ..?
ad esempio)public void printStudentClassInfo(Class studentClassRef) {}
può essere chiamato conTeacher.class
Questo può essere evitato usando generici.,
Class<Student> studentClassRef = t.getClass(); //Compilation error.
Ora che cos’è T ?? T è parametri di tipo( chiamati anche variabili di tipo); delimitato da parentesi angolari (<>), segue il nome della classe.
T è solo un simbolo, come un nome di variabile (può essere qualsiasi nome) dichiarato durante la scrittura del file di classe. Successivamente, T verrà sostituito con
nome di classe valido durante l’inizializzazione (HashMap<String> map = new HashMap<String>();
)
ad esempio) class name<T1, T2, ..., Tn>
Quindi Class<T>
rappresenta un oggetto di classe di tipo specifico ‘T
“.,
si Supponga che i metodi della classe deve lavorare con il tipo sconosciuto parametri come di seguito
Qui T può essere utilizzato come String
tipo di CarName
O T può essere utilizzato come Integer
tipo di modelNumber,
O T può essere utilizzato come Object
tipo di automobile valida istanza.
Ora qui sopra è il semplice POJO che può essere usato in modo diverso in fase di esecuzione.
Collezioni ad esempio) List, Set, Hashmap sono i migliori esempi che funzioneranno con oggetti diversi secondo la dichiarazione di T, ma una volta che abbiamo dichiarato T come String
e.,g) HashMap<String> map = new HashMap<String>();
Quindi accetterà solo oggetti di istanza della classe String.
Metodi generici
I metodi generici sono metodi che introducono i propri parametri di tipo. Questo è simile alla dichiarazione di un tipo generico, ma l’ambito del parametro type è limitato al metodo in cui viene dichiarato. Sono consentiti metodi generici statici e non statici, nonché costruttori di classi generiche.
La sintassi per un metodo generico include un parametro type, all’interno di parentesi angolari, e viene visualizzata prima del tipo restituito dal metodo., Per i metodi generici, la sezione dei parametri di tipo deve apparire prima del tipo restituito dal metodo.
Qui <K, V, Z, Y>
è la dichiarazione dei tipi utilizzati negli argomenti del metodo che dovrebbe prima del tipo di ritorno che è boolean
qui.
Nel seguito; type declaration<T>
non è richiesto a livello di metodo, poiché è già dichiarato a livello di classe.
class MyClass<T> { private T myMethod(T a){ return a; }}
Ma sotto è sbagliato in quanto i parametri di tipo a livello di classe K, V, Z e Y non possono essere utilizzati in un contesto statico (metodo statico qui).,
ALTRI SCENARI VALIDI SONO
E infine il metodo statico ha sempre bisogno di una dichiarazione esplicita <T>
; Non deriverà dal livello di classe Class<T>
. Questo perché il livello di classe T è associato all’istanza.
Leggi anche Restrizioni sui generici
Caratteri jolly e sottotipizzazione
argomento di tipo per un metodo generico