AlexNapoli ha scritto:
da errore nel cast e nel controllo instanceof
Il cast (Prova<T>) non è un errore ... è un
warning di "unchecked cast", perché il compilatore non può provare a priori che l'oggetto sia di tipo Prova<T> (può provare solo che l'oggetto è di tipo Prova, non di tipo Prova<T>).
L'uso di Prova<T> nel instanceof invece sì, è un
errore. Il tipo a destra del instanceof deve (ripeto, deve) essere un tipo che in inglese si dice
reifiable ("reificabile" in italiano), ovvero completamente rappresentato a runtime. Mentre Prova<T> per definizione dei generics non lo è.
Comunque, per far funzionare il tutto (e senza warning/errori) nel equals, è sufficiente usare Prova
<?> sia nel instanceof che nel cast (e ovviamente nel tipo di y). Prova<?>, sempre per definizione dei generics, è reifiable. Ma ti permette di estrarre il min solo vedendolo come Object. Ma questo è sufficiente per farci il equals con un altro min.