Generics Flashcards
In basiese beginsels, die eerste tipe generics?
Waar jy bv n abstract klas extend, en selfs wanneer jy die nuwe objekte skep, skep jy dit as die abstract tipe. Dit laat jou toe om enigiets wat daardie abstract klas extend, in daardie objek te stoor (ek dink hierdie moet interface wees, en nie abstract class - j kan nie net met n abstract class n objek skep nie?)
Wat is n generiese parameter, en waarvan moet j seker maak?
So n generiese parameter, kan enigiets wees. Daarim moet jy seker maak dat alles wat gebruik maak van daardie parameter, daai metodes het bv.
So tipies, skep n interface, klasse extend dan daardie interface. Dan skep jy n generiese parameter van die interface. Alles wat daardie interface extend, kan dan aangestuur word
Hoe lyk die syntax wanneer j n generiese parameter skep?
Public class Printer <T>{} So j skep actually n objek tipe van AnimalInterface</T>
Waar het j reeds te doen gehad met generics?
Met n ArrayList. As jy hom verklaar, dan se j met watter data tipe jy werk, anders kon j dit object maak, dan kan j enigiets daarin stoor. Maar dan sal j later moes type cast, wat nie n goeie praktyk is nie
So hoe dra j funskies oor wanneer j met generics werk?
Deur te se <T> en seker te maak die generiese metodes is verklaar in die interface</T>
Kan j met meer as een tioe generiese data tipe werk?
Jip
<T extends Dog, V extends Cat>
Hoe werk die bounds op die generiese tipe?
<T extends klasNaam & animalInterface & ….>
Kan net een klas extend, maar soveel interfaces as wat jy wil
Wat sal n voorbeeld wees van n raw type gebruik?
As jy n ArraList skep maar jy define net <object>. Iy moet altyd probeer om in soveel detail as moontlik te gaan</object>
Wat is n diamond, en hoe stel mens die compiler op dat jy dot kan gebruik?
ArrayList <animal> honde = new ArrayList<>();
Die laaste <> staan bekend as die diamond. Die language wat jy moet gebruik moet 8 of hoer wees. Jy gaan na File - Project Structure - set language to 8</animal>
Wat is die ou se groot rede om seker te maak jy gebruik parameterized values?
Seker te maak jy tel error reeds in compile time op
Kom ons se T is n abstract class, hoe sal jy n klas skep wat enige extension van die abstract klas kan hanteer?
Public class SomeClass <T>{
//so T gebruik ek nou as n plekhouer
Public SomeClass (T iets){}</T>
}
Casting met T?
Dit is moontlik, maar probeer maar wegbly. As j (T player) ontvang:
((Player)player).getName();
Hoekom is dit slegte praktyk om te he:
public class SomeClass <T></T>
Jy moet T bound anders kan n mens enigiets hier insit, en j gebruikdaardir objek verder. As j nie weet wat dit is nie, hoe gaan j dit gebruik?
Wat as een parameterized variable verskeie goed mag wees, hoe verklaar jy dit?
<T extends Player & League & Country>
Player is n klas, maar alles wat daarna volg is interfaces
In die voorbeel van die league, hoe maak jy seker die regte spanne speel teen mekaar?
Public void loadMatch (T opponentTeam, int scoreHome, int scoreOpponent)
Deur die parameterized variable te he, maak jy seker dieselfde span word gelaai as waarmee heeltyd gewerk word