Te lo spiegato nella prima risposta e come ti ho detto se non hai ancora studiato L'ereditarietà non lo potrai mai capire fino in fondo. Il concetto di fondo è che come hai ben notato che il tipo dichiarato in una classe può essere diverso a runtime.
poi non è proprio vero che non è un collection, ma in pratica è una classe ,per quanto riguarda hashmap è un innerClass "Values", che estende AbstractCollection che a sua volta implementa collection. In AbstractCollection sono definiti i metodi come isEmpty, e altri nel tuo caso vengono definiti nella inner class Values

 
			
			 
					
					
					
						 Rispondi quotando
  Rispondi quotando