Articles

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