Soit le code suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Classe1<T>
{
    protected T ref = null;
 
    public Classe1()
    {
        ref = (T)this;
        System.out.println(ref.getClass());
    }
 
    public static void main(String[] args)
    {
        Classe1<String> c = new Classe1<String>();
    }
}
L’exécution de ce code affiche dans la console :
class Classe1

Or je ne comprends pas pourquoi "ref" n'est pas de type String et pourquoi je n'ai pas une ClassCastException lors de l'affectation = ref = (T)this;