This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
test:test_2015 [2015/01/21 09:42] Daniel Ciocirlan [Clase abstracte și interfețe] |
test:test_2015 [2015/01/21 12:18] (current) Daniel Ciocirlan [Colecții și genericitate] |
||
---|---|---|---|
Line 367: | Line 367: | ||
**Explicație**: Ideea cheie în această întrebare și în lucrul cu generics în general este că, de exemplu (exemplul nostru), dacă ''Student'' e subclasă a ''Person'', atunci ''ArrayList<Student>'' **nu** e subclasă a ''ArrayList<Person>'', deci atribuirea nu este corectă (un astfel de exemplu este și în [[:laboratoare:genericitate#genericitatea-in-subtipuri|laboratorul de genericitate]]). | **Explicație**: Ideea cheie în această întrebare și în lucrul cu generics în general este că, de exemplu (exemplul nostru), dacă ''Student'' e subclasă a ''Person'', atunci ''ArrayList<Student>'' **nu** e subclasă a ''ArrayList<Person>'', deci atribuirea nu este corectă (un astfel de exemplu este și în [[:laboratoare:genericitate#genericitatea-in-subtipuri|laboratorul de genericitate]]). | ||
- | Matching-ul tipului generic (cel dintre paranteze unghiulare) este făcut la compilare și singura variantă care trece de această verificare este varianta în bold. Am fi putut avea matching corect cu wildcard-uri, dar nu a fost cazul aici. Pentru mai multe detalii puteți să citiți despre //covarianță/contravarianță// și despre //type erasure// ca să înțelegeți motivele pentru care Java se comportă astfel. | + | Matching-ul tipului generic (cel dintre paranteze unghiulare) este făcut la compilare și singura variantă care trece de această verificare este varianta în bold. Am fi putut avea matching corect cu wildcard-uri, dar nu a fost cazul aici. Pentru mai multe detalii puteți să citiți despre [[http://en.wikipedia.org/wiki/Covariance_and_contravariance_%28computer_science%29 | covarianță și contravarianță]] și despre [[http://docs.oracle.com/javase/tutorial/java/generics/erasure.html | type erasure]] ca să înțelegeți motivele pentru care Java se comportă astfel. |
- | + | ||
== Excepții == | == Excepții == | ||