Video: C# Tutorial For Beginners - Learn C# Basics in 1 Hour 2025
Et af de oprindelige designmål for Java var at holde sproget så enkelt som muligt. Sprogets udvikler tog nogle unødigt komplicerede træk ved C ++ og kastede dem ud af vinduet. Resultatet var et sprog, der var elegant og slankt. Nogle mennesker sagde, at sproget var for slank.
Så efter flere års diskussion og skævhed blev Java lidt mere kompliceret. I år 2004 havde Java enum typer, forbedret til sløjfer, statisk import og nogle andre interessante nye funktioner. Men den mest talte nye funktion var introduktionen af generiske stoffer.
ArrayList people = new ArrayList ();
Brugen af noget som var nyt i Java 5. 0. I gammel stil Java ville du skrive
ArrayList people = new ArrayList ();
I disse dage kunne en ArrayList lagre næsten alt, hvad du ville sætte i det - et nummer, en konto, et værelse, en streng … noget. Klassen ArrayList var meget alsidig, men med denne alsidighed kom der nogle hovedpine. Hvis du kunne sætte noget i en ArrayList, kunne du ikke let forudsige, hvad du ville komme ud af en ArrayList.
Du kunne ikke nemt skrive kode, der antog, at du havde gemt bestemte typer værdier i ArrayListen. Her er et eksempel:
ArrayList things = new ArrayList (); ting. tilføj (ny konto ()); Konto myAccount = ting. få (0); // BRUG IKKE DETTE. DET ER DÅRLIG KODE.
I den tredje linje griber opkaldet til (0) den tidligste værdi i samlingen af ting. Opkaldet for at få (0) er okay, men så kører kompilatoren på forsøget på tildeling til myAccount. Du får en besked på den tredje linje, der siger, at hvad som helst du får fra listen, kan ikke udfyldes i variablen myAccount.
Du får denne besked, fordi det tidspunkt, hvor kompilatoren når den tredje linje, har det glemt at varen tilføjet på anden linje var af typen Konto!
Introduktionen af generiske løsninger løser dette problem:
ArrayList things = new ArrayList (); ting. tilføj (ny konto ()); Konto myAccount = ting. få (0); // BRUG DENNE KODE INSTEAD. DET ER GOD KODE.
Tilføjelse på to steder fortæller kompilatoren, at ting gemmer kontoinstanser - intet andet. Så i den tredje linje i den foregående kode får du en værdi fra samlingen af ting. Derefter, fordi ting kun gemmer kontoobjekter, kan du gøre myAccount til den nye værdi.
Java 5. 0 tilføjede generikere til Java. Men kort efter fødslen af Java 5. 0 opdagede programmører, hvordan klodset koden for generiske kan være.Du kan trods alt generere generiske genstande. En ArrayList kan indeholde en masse arrays, som hver kan være en ArrayList. Så du kan skrive
ArrayListmess = ny ArrayList ();
Alle gentagelser i denne roddeklaration giver programmererne hovedpine! For at undgå denne grimhed har Java 7 og nyere versioner en diamantoperatør , . Diamantoperatøren fortæller Java at genbruge alt det sindssygt komplicerede ting du lægger i den forrige del af den generiske erklæring.
I dette eksempel fortæller Java at genbruge
ArrayListmess = ny ArrayList ();
I Java 7 og senere kan du skrive en af disse roddeklarationer - den originale, ubehagelige erklæring med to forekomster af ArrayList [] eller den strømlinede (kun mildt grimme) erklæring med diamantoperatøren og kun en ArrayList [] Hændelse.
Ja, den strømlinede kode er stadig kompliceret. Men uden al ArrayList [] gentagelse er den strømlinede kode mindre besværlig. Java 7-diamantoperatøren fjerner en chance for at du kopierer noget forkert og har en stor fejl i din kode.