Napokon možete deklarirati lokalne varijable Inferred Type u Javi s var - evo zašto je to strašno

Pozdrav svima! U ovom ću članku razgovarati o novim značajkama Jave 10. Konkretno, govorit ću o vjerojatno najpopularnijem i najkorisnijem: uvođenju ključne riječi var u Javi. Pa, to zapravo nije ključna riječ - ali reći ću vam o tome kasnije.

Napokon…

Napokon, Java je dobila ključnu riječ var za deklariranje lokalnih varijabli. To vam omogućuje deklariranje varijable bez njenog tipa. Na primjer, umjesto da to učinite:

String str = “Java”

sada možete reći samo ovo:

var str = “Java”.

Ovo možda ne zvuči previše dobro kada deklarirate String ili int varijablu, ali razmislite o složenim vrstama, na primjer, s generičkim lijekovima. To će sigurno uštedjeti puno tipkanja, a također će poboljšati čitljivost koda.

Malo pozadine

Programeri Java već se dugo žale na šifru i ceremonije uključene u pisanje koda. Mnoge stvari kojima na jezicima kao što su Python, Groovy ili JavaScript trebaju samo 5 minuta mogu trajati više od 30 minuta na Javi zbog svoje opširnosti.

Ako ste kodirali na Scali, Kotlinu, Go, C # ili bilo kojem drugom JVM jeziku, tada znate da svi oni imaju nekakav zaključak tipa lokalne varijable koji je već ugrađen u jezik.

Na primjer, JavaScript ima let i var , Scala i Kotlin imaju var i val , C ++ ima auto , C # ima var, a Go to podržava deklaracijom s operatorom : = .

Do Jave 10, Java je bio jedini jezik koji nije imao zaključivanje tipa lokalne varijable ili podršku za ključnu riječ var.

Iako je zaključivanje tipova znatno poboljšano u Javi 8 uvođenjem lambda izraza, referenci metoda i Streamova, lokalne je varijable ipak trebalo deklarirati odgovarajućim tipom. Ali to je sada nestalo! Java 10 ima značajku, JEP 286: Lokalno varijabilno zaključivanje tipa , koja će omogućiti deklariranje lokalnih varijabli bez podataka o tipu i samo pomoću ključne riječi var.

Pogledajmo izbliza.

Primjeri ključnih riječi Java 10 var

Evo nekoliko primjera ključne riječi var Java 10:

var str = "Java 10"; // infers String 
var list = new ArrayList(); // infers ArrayList
var stream = list.stream(); // infers Stream

Kao što sam rekao, u ovom trenutku možda nećete u potpunosti cijeniti ono što var čini za vas. Ali pogledajte sljedeći primjer:

var list = List.of(1, 2.0, "3")

Ovdje će se popis zaključiti na popis t; .. >> koji je presjek, ali nećete morati upisivati ​​potpune podatke o tipu. var u ovom slučaju znatno olakšava pisanje i čitanje koda.

U sljedećem odjeljku vidjet ćemo još nekoliko primjera koji će vam pomoći naučiti kako pisati sažeti kôd pomoću var u Java 10.

Pisanje sažetog koda pomoću ključne riječi var na Javi

Korištenje var rezervne riječi također čini vaš kôd jezgrovitim smanjenjem dupliciranja - na primjer, naziv klase koji dolazi s desne i lijeve strane zadataka, kao što je prikazano u sljedećem primjeru:

ByteArrayOutputStream bos = new ByteArrayOutputStream();

Ovdje se ByteArrayOutputStream ponavlja dva puta, a to možemo ukloniti korištenjem značajke var Java 10, kao što je prikazano dolje:

var bos = new ByteArrayOutputStream();

Možemo činiti slične stvari dok koristimo stavke try-with-resource u Javi, na primjer ovo

try (Stream data = dbconn.executeQuery(sql)) { return data.map(...) .filter(...) .findAny(); }

može se napisati na sljedeći način:

try (var books = dbconn.executeQuery(query)) { return books.map(...) .filter(...) .findAny(); }

Ovo je samo nekoliko primjera. Postoji puno mjesta na kojima možete koristiti var kako biste svoj kôd učinili konciznijim i čitljivijim, a mnoga od njih možete vidjeti na Sanderovom tečaju Pluarlsight Što je novo u Javi 10 .

To je plaćeni tečaj, ali možete pogledati ovo desetodnevno besplatno probno razdoblje.

Za one programere koji su koristili Groovy ili Scala, uvođenjem var čini se kao da Java ide Scala putem ... ali samo će vrijeme pokazati.

Za sada možemo biti samo sretni što var olakšava deklariranje složene lokalne varijable u Javi 10.

I napomena: zaključivanje tipa lokalne varijable ključne riječi Java 10 var može se koristiti samo za deklariranje lokalnih varijabli (na primjer, bilo koje varijable unutar tijela metode ili bloka koda).

Možete li koristiti var za deklariranje varijabli člana u Javi?

Ne možete koristiti var za deklariranje varijabli člana unutar klase, formalnih parametara metode ili povratne vrste metoda.

Na primjer, ovaj je primjer var-a u redu:

public void aMethod(){ var name = "Java 10"; } 

Ali sljedeći primjer NIJE U redu:

class aClass{ var list; // compile time error }

Dakle, iako ova nova značajka Java 10 privlači pažnju i izgleda dobro, još uvijek je dug put. Ipak, možete ga početi koristiti za daljnje pojednostavljivanje koda. Manje standardnog koda uvijek znači bolji i čitljiviji kod.

Važne točke o ovoj novoj ključnoj riječi var

Sad kad znate da možete deklarirati lokalne varijable bez deklariranja vrste u Javi 10, vrijeme je da naučite nekoliko važnih stvari o ovoj značajci prije nego što je počnete koristiti u svom proizvodnom kodu:

1. Ova je značajka izgrađena u skladu s JEP 286: Lokalno varijabilno zaključivanje tipa, a autor je nitko drugi nego Brian Goetz. Autor je Java Concurrency in Practice, jedne od najpopularnijih knjiga za programere Java.

2. Ključna riječ var omogućuje zaključivanje tipa lokalne varijable, što znači da će prevodilac zaključiti o vrsti lokalne varijable. Sada to ne trebate prijaviti.

3. Izvod tipa lokalne varijable ili ključna riječ Java 10 var može se koristiti samo za deklariranje lokalnih varijabli , na primjer unutar metoda, na bloku koda inicijalizatora, indeksa u poboljšanoj petlji for, lambda izraza i lokalnih varijabli deklariranih u tradicionalnoj petlji for .

Ne možete ga koristiti za deklariranje formalnih varijabli i povratnih tipova metoda, za deklariranje varijabli ili polja članova, za formalne varijable konstruktora i za bilo koju drugu deklaraciju varijable.

4. Unatoč uvođenju var-a, Java je i dalje statički otkucan jezik i trebalo bi biti dovoljno podataka da se zaključi o vrsti lokalne varijable. Ako nije, kompajler će izbaciti pogrešku.

5. Ključna riječ var slična je ključnoj riječi auto za C ++, var za C #, JavaScript, Scala, Kotlin, def od Groovy i Python (donekle) i operator: = programskog jezika Go.

6. Jedna važna stvar koju treba znati jest da, iako var izgleda kao ključna riječ, ona zapravo nije ključna riječ. Umjesto toga, to je rezervirano ime tipa. To znači da to neće utjecati na kod koji koristi var kao varijablu, metodu ili naziv paketa.

7. Još jedna stvar koju treba napomenuti jest da će ova promjena Java 10 utjecati na kod koji koristi var kao naziv klase ili sučelja. No, kako kaže JEP, ta su imena u praksi rijetka, jer krše uobičajene konvencije imenovanja.

8. Nepromjenjivi ekvivalent lokalnih varijabli ili konačnih varijabli val i let još nije podržan u Javi 10.

Završavati

To je sve o var u Javi 10! To je zanimljiva značajka Java 10 koja vam omogućuje deklariranje lokalnih varijabli bez deklariranja njihovog tipa. To će također pomoći programerima Jave da brzo prikupe druge jezike, poput Pythona, Scale ili Kotlina, jer jako koriste var za deklariranje promjenjivih varijabli i val za deklariranje nepromjenjivih lokalnih varijabli.

Iako JEP 286: Lokalno varijabilno zaključivanje tipa podržava samo var, a ne val , i dalje je korisno i više nalikuje kodiranju Scale u Javi.

Daljnje učenje

Što je novo u Javi 10 Sandera Maka

Stilske smjernice za zaključivanje lokalnih varijabli u Javi

JEP 286: Lokalno varijabilno zaključivanje tipa

10 stvari Java Developer bi trebao naučiti u 2018

Kompletni Java MasterClass za bolje učenje Jave

Hvala što ste pročitali ovaj članak. Ako vam se sviđa ova nova značajka Java 10, podijelite je s prijateljima i kolegama.

Ako imate pitanja ili povratnih informacija, ostavite napomenu i pratite još Java 10 tutorial-a i članaka ovdje.

Izvorno objavljeno na javarevisited.blogspot.com 27. ožujka 2018.