User Tools

Site Tools


Problem constructing authldap
test_grila_ian2015
Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
test_grila_ian2015 [2015/01/21 00:41]
Adriana Draghici [Clase abstracte și interfețe]
test_grila_ian2015 [2015/01/21 00:50]
Adriana Draghici [Colecții și genericitate]
Line 254: Line 254:
 == Clase interne ==  == Clase interne == 
  
-**14. Cu ce poate fi înlocuită linia (xxx) pentru a obține o instanță a B?**+**10. Cu ce poate fi înlocuită linia (xxx) pentru a obține o instanță a B?**
  
 <code java> <code java>
Line 276: Line 276:
  
  
- +**11. Fie interfața ''​Runnable''​ cu singura metodă ''​public void run()''​. Clasa ''​Thread''​ are un constructor ce primește un ''​Runnable''​ ca parametru și expune o metodă ''​public void start()''​. Ce concluzie trageți de la următorul cod?**
-**1. Fie interfața ''​Runnable''​ cu singura metodă ''​public void run()''​. Clasa ''​Thread''​ are un constructor ce primește un ''​Runnable''​ ca parametru și expune o metodă ''​public void start()''​. Ce concluzie trageți de la următorul cod?**+
  
 <code java> <code java>
Line 297: Line 296:
  
  
-**3. Ce cuvânt cheie introdus la (xxx) va permite compilarea programului:​**+**12. Ce cuvânt cheie introdus la (xxx) va permite compilarea programului:​**
  
 <code java> <code java>
Line 322: Line 321:
   * static   * static
  
-**Explicație:​** Pentru a folosi variabile locale din afara contextului (//​scope//​-ului) unei clase interne (cum e și cazul nostru), e necesar cuvântul cheie ''​final''​. Motivul este layout-ul în memorie al claselor și variabilelor,​ iar ''​final''​ permite (prin copiere) și garantează accesul la valoarea corectă a variabliei ''​x''​ la orice moment. ''​static''​ și ''​public''​ nu au oricum sens pentru variabile locale, iar diferențierea dintre "nu e nevoie de modificator"​ și "​final"​ este motivul precedent.+**Explicație:​** ​//Pentru a folosi variabile locale din afara contextului (//​scope//​-ului) unei clase interne (cum e și cazul nostru), e necesar cuvântul cheie ''​final''​//. Motivul este layout-ul în memorie al claselor și variabilelor,​ iar ''​final''​ permite (prin copiere) și garantează accesul la valoarea corectă a variabliei ''​x''​ la orice moment. ''​static''​ și ''​public''​ nu au oricum sens pentru variabile locale, iar diferențierea dintre "nu e nevoie de modificator"​ și "​final"​ este motivul precedent.
  
  
 == Colecții și genericitate == == Colecții și genericitate ==
  
-**12. Dacă dorim să stocăm un șir de elemente fără duplicate într-o colecție fără să ne intereseze ordinea elementelor sau sortarea lor, clasa cea mai potrivită este**+**13. Dacă dorim să stocăm un șir de elemente fără duplicate într-o colecție fără să ne intereseze ordinea elementelor sau sortarea lor, clasa cea mai potrivită este**
  
   * Vector   * Vector
Line 338: Line 337:
  
  
-**4. Ce se întâmplă la rularea următorului cod:**+**14. Ce se întâmplă la rularea următorului cod:**
  
 <code java> <code java>
Line 360: Line 359:
  
  
-**19. Care dintre următoarele variante este corectă (compilează)?​**+**15. Care dintre următoarele variante este corectă (compilează)?​**
  
   * ''​ArrayList <​Person>​mylist = new ArrayList<​Student>​();''​   * ''​ArrayList <​Person>​mylist = new ArrayList<​Student>​();''​
Line 367: Line 366:
   * ''​ArrayList<​Student>​mylist = new ArrayList<​Person>​();''​   * ''​ArrayList<​Student>​mylist = new ArrayList<​Person>​();''​
  
-**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ă. 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.+**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]])
  
-Pentru cultura voastră generală, 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-uridar 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.
  
  
test_grila_ian2015.txt · Last modified: 2015/01/21 00:53 by Adriana Draghici