Végül deklarálhatja a következtetett típusú helyi változókat a Java-ban a var-val - ez az oka annak, hogy ez fantasztikus

Üdv mindenkinek! Ebben a cikkben a Java 10 új funkcióit tárgyalom . Konkrétan a legnépszerűbb és leghasznosabb témáról fogok beszélni: a var kulcsszó bevezetéséről a Java-ban. Nos, ez nem igazán egy kulcsszó - de később mesélek róla.

Valahára…

Végül a Java megszerezte a var kulcsszót a helyi változók deklarálásához . Ez lehetővé teszi egy változó deklarálását annak típusa nélkül. Például ennek helyett:

String str = “Java”

most csak ezt mondhatja:

var str = “Java”.

Lehet, hogy ez nem hangzik túl nagynak, ha Stringet vagy int változót deklarál, de gondoljon például a generikusokkal összetett típusokra. Ez biztosan rengeteg gépelést takarít meg, és javítja a kód olvashatóságát is.

Egy kis háttér

A Java fejlesztők régóta panaszkodnak a kazánlap kódjára és a kódírás közben részt vevő szertartásokra. Sok olyan dolog, amely mindössze 5 percet vesz igénybe olyan nyelveken, mint a Python, a Groovy vagy a JavaScript, a Java bőbeszédűsége miatt több mint 30 percet vehet igénybe.

Ha Scala, Kotlin, Go, C # vagy bármely más JVM nyelvet kódoltál, akkor tudod, hogy mindannyian valamilyen helyi változó típusú következtetést már beépítettek a nyelvbe.

Például a JavaScript let és var , Scala és Kotlin var és val , a C ++ auto , C # var, a Go pedig ezt deklarálja a : = operátorral.

A Java 10-ig a Java volt az egyetlen nyelv, amely nem tartalmazta a helyi változótípusra vonatkozó következtetéseket vagy támogatást a var kulcsszóhoz.

Habár a típus következtetése sokat javult a Java 8-ban a lambda kifejezés, a módszer referenciák és a Stream bevezetésével, a helyi változókat még mindig megfelelő típussal kellett deklarálni. De ez most elmúlt! A Java 10 rendelkezik a JEP 286: Local-Variable Type Inference szolgáltatással , amely lehetővé teszi a helyi változók deklarálását típusinformációk nélkül és csupán a var kulcsszó használatával.

Nézzük meg közelebbről.

Java 10 var kulcsszó példák

Íme néhány példa a Java 10 var kulcsszavára:

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

Mint mondtam, ezen a ponton nem biztos, hogy teljesen megbecsüli, mit tesz a var érted. De nézze meg a következő példát:

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

Itt a lista lehet következtetni a List t; .. >> amely egy kereszteződés típus, de akkor nem kell beírni a teljes információt. A var ebben az esetben sokkal könnyebben írja és olvassa a kódot.

A következő részben további példákat látunk, amelyek segítenek megtanulni, hogyan kell tömör kódot írni a var segítségével a Java 10-ben.

Tömör kód írása a var kulcsszóval a Java-ban

A var reserve szó használata tömörvé teszi a kódot is azáltal, hogy csökkenti a duplikációt - például az osztály neve, amely a hozzárendelések jobb és bal oldalán egyaránt megtalálható, a következő példában látható módon:

ByteArrayOutputStream bos = new ByteArrayOutputStream();

Itt a ByteArrayOutputStream kétszer megismétlődik, és ezt kiküszöbölhetjük a Java 10 var szolgáltatásának használatával, az alábbiak szerint:

var bos = new ByteArrayOutputStream();

Hasonló dolgokat tehetünk, miközben például megpróbáljuk az erőforrásokkal történő kimutatásokat a Java-ban

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

a következőképpen írható:

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

Ez csak néhány példa. Nagyon sok helyen használhatja a var-t, hogy tömörebbé és olvashatóbbá tegye a kódot, amelyek közül sokat láthat a Sander Pluarlsight tanfolyama, a Java 10 újdonságai .

Ez egy fizetős tanfolyam, de megnézheti ezt a 10 napos ingyenes próbaverziót.

Azoknak a programozóknak, akik használták a Groovyt vagy a Scalát, a var bevezetésével úgy tűnik, hogy a Java a Scala utat járja be ... de csak az idő fogja megmondani.

Egyelőre csak annak örülhetünk, hogy a var megkönnyíti a komplex helyi változó deklarálását a Java 10-ben.

És ne feledje: a Java 10 var kulcsszó helyi változó típusú következtetése csak helyi változók deklarálására használható (például bármelyik változó a method törzsben vagy a kódblokkban).

Használhatja a var-t tagváltozók deklarálására a Java-ban?

A var nem használható tagváltozók deklarálására az osztályon belül, a módszer formális paraméterei vagy a return módszer módszerek belül.

Például a var ezen példája rendben van:

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

De a következő példa NEM OK:

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

Tehát annak ellenére, hogy ez az új Java 10 funkció figyelemfelkeltő és jól mutat, még hosszú utat kell megtennie. Ennek ellenére elkezdheti használni a kód további egyszerűsítésére. A kevesebb kazánlapkód mindig jobb és olvashatóbb kódot jelent.

Fontos pontok az új var kulcsszóval kapcsolatban

Most, hogy tudja, hogy deklarálhatja a helyi változókat anélkül, hogy deklarálná a típust a Java 10-ben, itt az ideje, hogy megtanuljon néhány fontos dolgot erről a szolgáltatásról, mielőtt elkezdené használni a termelési kódban:

1. Ez a szolgáltatás a JEP 286: Local-Variable Type Inference alatt készült, és nem más, mint Brian Goetz írta. Ő a Java Concurrency in Practice szerzője, a Java fejlesztők egyik legnépszerűbb könyve.

2. A var kulcsszó lehetővé teszi a helyi változótípus következtetését, ami azt jelenti, hogy a fordító a helyi változó típusára következtet. Most nem kell nyilatkoznia.

3. A helyi változó típusú következtetés vagy a Java 10 var kulcsszó csak a helyi változók deklarálására használható, például a metódusok belsejében, az inicializáló kódblokkon, a továbbfejlesztett ciklus indexein, a lambda kifejezéseken és a hagyományos a cikluson deklarált helyi változókon. .

Nem használható formális változók és visszatérési módszerek deklarálására, tagváltozók vagy mezők, konstruktor formális változók és bármilyen más típusú változó deklaráció deklarálására.

4. A var bevezetése ellenére a Java továbbra is statikusan tipizált nyelv, és elegendő információnak kell lennie ahhoz, hogy a helyi változó típusára következtethessen. Ha nem, akkor a fordító hibát dob.

5. A var kulcsszó hasonló a C ++, a C #, a JavaScript, a Scala, a Kotlin, a Groovy és a Python def (bizonyos mértékig) definiált automatikus kulcsszavához és a Go programozási nyelv operátorához.

6. Fontos tudni, hogy annak ellenére, hogy a var kulcsszónak tűnik, valójában nem egy kulcsszó. Ehelyett fenntartott típusú név. Ez azt jelenti, hogy ez a kód, amely változóként, metódusként vagy csomagnévként használja a var-t, nem lesz hatással.

7. Egy másik dolog, amit meg kell jegyezni, hogy a var-t osztály vagy interfész névként használó kódra hatással lesz ez a Java 10 változás. De ahogy a JEP mondja, ezek a nevek a gyakorlatban ritkák, mivel sértik a szokásos elnevezési szokásokat.

8. A lokális változók vagy végső változók val és let változhatatlan egyenértékét még nem támogatja a Java 10.

Csomagolás

Ennyit a Java 10 var-ról! Ez egy érdekes Java 10 szolgáltatás, amely lehetővé teszi a helyi változók deklarálását a típusuk deklarálása nélkül. Ez a Java fejlesztőknek is segítséget nyújt más nyelvek gyors felismerésében, például a Pythonban, a Scalában vagy a Kotlinban, mert a var használatával erősen használják a változtatható változókat, a val pedig a megváltoztathatatlan helyi változókat.

Annak ellenére, hogy a JEP 286: A Local-Variable Type Inference csak a var-t és a val-t nem támogatja , mégis hasznos, és inkább úgy érzi magát, mint a Scala kódolása Java-ban.

További tanulás

A Sander Mak újdonságai a Java 10-ben

Stílus irányelvek a helyi változótípusok következtetésére a Java-ban

JEP 286: Helyi változó típusú következtetés

10 dolog, amit a Java fejlesztőnek meg kell tanulnia 2018-ban

A teljes Java MasterClass a Java jobb elsajátításához

Köszönjük, hogy elolvasta ezt a cikket. Ha tetszik ez az új Java 10 szolgáltatás, kérjük, ossza meg barátaival és kollégáival.

Ha bármilyen kérdése vagy visszajelzése van, kérjük, dobjon egy megjegyzést, és maradjon itt a további Java 10 oktatóanyagokról és cikkekről.

Eredetileg a javarevisited.blogspot.com címen jelent meg 2018. március 27-én.