Voit vihdoin julistaa päätellyt tyypin paikalliset muuttujat Java: ssa varilla - tästä syystä se on mahtavaa

Hei kaikki! Tässä artikkelissa keskustelen Java 10: n uusista ominaisuuksista . Tarkemmin sanon todennäköisesti suosituimman ja hyödyllisimmän: var-avainsanan käyttöönoton Javassa. No, se ei oikeastaan ​​ole avainsana - mutta kerron siitä myöhemmin.

Viimeinkin…

Lopuksi Java on saanut var- avainsanan ilmoittamaan paikalliset muuttujat. Tämän avulla voit ilmoittaa muuttujan ilman sen tyyppiä. Esimerkiksi sen sijaan, että tekisit tämän:

String str = “Java”

voit nyt vain sanoa tämän:

var str = “Java”.

Tämä ei ehkä kuulosta paljoakaan voitolta, kun ilmoitat merkkijonon tai int-muuttujan, mutta ajattele esimerkiksi monimutkaisia ​​tyyppejä geneeristen lääkkeiden kanssa. Tämä säästää varmasti paljon kirjoittamista ja parantaa myös koodin luettavuutta.

Pieni tausta

Java-kehittäjät ovat jo pitkään valittaneet kattilakoodista ja seremonioista, jotka liittyvät koodin kirjoittamiseen. Monet asiat, jotka vievät vain 5 minuuttia kielillä, kuten Python, Groovy tai JavaScript, voivat Java-kielessä kestää yli 30 minuuttia sen sanattomuuden vuoksi.

Jos olet koodannut Scalan, Kotlinin, Go: n, C #: n tai minkä tahansa muun JVM-kielen, tiedät, että niillä kaikilla on jo jonkinlainen paikallisen muuttujan tyyppinen päättely kielelle.

Esimerkiksi JavaScript on antanut let ja var , Scala ja Kotlin var ja val , C ++: lla auto , C #: lla var, ja Go tukee tätä ilmoittamalla operaattorilla : = .

Java 10: een asti Java oli ainoa kieli, jolla ei ollut paikallisen muuttujatyypin päätelmää tai tukea var-avainsanalle.

Vaikka tyypin päättelyä parannettiin paljon Java 8: ssa ottamalla käyttöön lambda-lauseke, menetelmäviitteet ja Streams, paikalliset muuttujat oli silti ilmoitettava asianmukaisella tyypillä. Mutta se on nyt kadonnut! Java 10: ssä on ominaisuus, JEP 286: Paikallisten muuttujien tyypin päättely , joka sallii paikallisten muuttujien ilmoittamisen ilman tyyppitietoja ja käyttämällä vain av-avainsanaa.

Katsotaanpa tarkemmin.

Java 10 var -esimerkkejä

Tässä on joitain esimerkkejä Java 10: n var-avainsanasta:

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

Kuten sanoin, tässä vaiheessa et ehkä ymmärrä täysin, mitä var tekee sinulle. Mutta katso seuraava esimerkki:

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

Tässä luettelo päätetään luetteloon t; .. >>, joka on leikkaustyyppi, mutta sinun ei tarvitse kirjoittaa kaikkia tyyppitietoja. var helpottaa koodin kirjoittamista ja lukemista tässä tapauksessa paljon.

Seuraavassa osassa on lisää esimerkkejä, jotka auttavat sinua oppimaan kuinka kirjoittaa tiivis koodi koodilla var Java 10: ssä.

Tiivistetyn koodin kirjoittaminen Java-avainsanalla var

Var-vara-sanan käyttö tekee koodistasi myös ytimekkään vähentämällä päällekkäisyyksiä - esimerkiksi luokan nimi, joka tulee sekä tehtävien oikealla että vasemmalla puolella seuraavan esimerkin mukaisesti:

ByteArrayOutputStream bos = new ByteArrayOutputStream();

Täällä ByteArrayOutputStream toistuu kahdesti, ja voimme poistaa sen käyttämällä Java 10: n var-ominaisuutta alla esitetyllä tavalla:

var bos = new ByteArrayOutputStream();

Voimme tehdä samanlaisia ​​asioita, kun käytämme esimerkiksi kokeile resursseja -lausekkeita Javassa

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

voidaan kirjoittaa seuraavasti:

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

Nämä ovat vain muutamia esimerkkejä. On olemassa monia paikkoja, joissa voit käyttää varia, jotta koodisi olisi suppeampi ja luettavampi, joista monet ovat nähtävissä Sanderin Pluarlsight-kurssilla Mitä uutta Java 10: ssä .

Se on maksettu kurssi, mutta voit tarkistaa tämän 10 päivän ilmaisen kokeilun.

Niille ohjelmoijille, jotka ovat käyttäneet Groovyä tai Scalaa, varin käyttöönotto näyttää siltä, ​​että Java kulkee Scalan tietä ... mutta vain aika näyttää.

Toistaiseksi voimme olla onnellisia siitä, että var helpottaa monimutkaisen paikallisen muuttujan ilmoittamista Java 10: ssä.

Ja huomioi: Java 10 var -avainsanan paikallisen muuttujan tyyppistä päättelyä voidaan käyttää vain paikallisten muuttujien (esimerkiksi minkä tahansa muuttujan rungon tai koodilohkon sisällä) ilmoittamiseen.

Voitteko käyttää muuttujaa ilmoittamaan jäsenmuuttujat Java: ssa?

Et voi käyttää muuttujaa ilmoittamaan jäsenmuuttujia luokan sisällä, metodin muodollisia parametreja tai metodien palautustyyppejä.

Esimerkiksi tämä esimerkki varista on OK:

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

Mutta seuraava esimerkki EI OLE OK:

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

Joten vaikka tämä uusi Java 10 -ominaisuus on huomiota herättävä ja näyttää hyvältä, sillä on vielä pitkä matka. Voit silti alkaa käyttää sitä koodin yksinkertaistamiseksi edelleen. Vähemmän kattilakoodia tarkoittaa aina parempaa ja luettavampaa koodia.

Tärkeitä tietoja tästä uudesta var-avainsanasta

Nyt kun tiedät, että voit ilmoittaa paikalliset muuttujat ilmoittamatta tyyppiä Java 10: ssä, on aika oppia muutama tärkeä asia tästä ominaisuudesta ennen kuin aloitat sen käyttämisen tuotantokoodissasi:

1. Tämä ominaisuus on rakennettu kohtaan JEP 286: Local-Variable Type Inference ja sen on kirjoittanut kukaan muu kuin Brian Goetz. Hän on kirjoittanut Java Concurrency in Practice -sovelluksen, joka on yksi Java-kehittäjien suosituimmista kirjoista.

2. Var-avainsana sallii paikallisen muuttujatyypin päättelyn, mikä tarkoittaa, että kääntäjä päättää paikallisen muuttujan tyypin. Nyt sinun ei tarvitse ilmoittaa sitä.

3. Paikallisen muuttujan tyypin päättelyä tai Java 10 var -avainsanaa voidaan käyttää vain paikallisten muuttujien , esimerkiksi menetelmien sisäisten, ilmoittamiseen alustusohjelmakoodilohkossa, parannetun silmukan indeksit, lambda-lausekkeet ja perinteiset silmukalle ilmoitetut paikalliset muuttujat .

Et voi käyttää sitä muodollisten muuttujien ja palautustyyppisten menetelmien ilmoittamiseen, jäsenmuuttujien tai kenttien, rakentajan muodollisten muuttujien ja muun tyyppisten muuttujien ilmoitusten ilmoittamiseen.

4. Varin käyttöönotosta huolimatta Java on edelleen staattisesti kirjoitettu kieli, ja tietoja tulisi olla riittävästi paikallisen muuttujan tyypin päättelemiseksi. Jos ei, kääntäjä heittää virheen.

5. Var-avainsana on samanlainen kuin C ++: n, C #: n, JavaScript: n, Scalan, Kotlinin, Gro of Groovyn ja Pythonin (tietyssä määrin) def-avainsana ja Go-ohjelmointikielen operaattori.

6. Yksi tärkeä asia on tietää, että vaikka var näyttää avainsanalta, se ei oikeastaan ​​ole avainsana. Sen sijaan se on varatun tyypin nimi. Tämä tarkoittaa, että koodi, joka käyttää varia muuttujana, menetelmänä tai paketin nimellä, ei vaikuta.

7. Toinen huomioitava asia on, että tämä Java 10 -muutos vaikuttaa koodiin, joka käyttää varia luokan tai käyttöliittymän nimellä. Mutta kuten JEP sanoo, nämä nimet ovat harvinaisia ​​käytännössä, koska ne rikkovat tavanomaisia ​​nimityskäytäntöjä.

8. Java 10 ei tue vielä paikallisten muuttujien tai lopullisten muuttujien muuttumattomaa vastaavuutta val and let.

Käärimistä

Siinä kaikki Java 10: n var-versiossa! Se on mielenkiintoinen Java 10 -ominaisuus, jonka avulla voit ilmoittaa paikalliset muuttujat ilmoittamatta niiden tyyppiä. Tämä auttaa myös Java-kehittäjiä valitsemaan nopeasti muut kielet, kuten Python, Scala tai Kotlin, koska he käyttävät voimakkaasti varia muuttuvien muuttujien julistamiseen ja val julistavat muuttumattomia paikallisia muuttujia.

Vaikka JEP 286: Local-Variable Type Inference tukee vain var ja ei val , se on silti hyödyllinen ja tuntuu enemmän kuin Scalan koodaaminen Javalassa.

Lisäopiskelu

Mitä uutta Java 10: ssä on kirjoittanut Sander Mak

Tyylin ohjeet paikallisten muuttujatyyppien päätelmille Java-ohjelmassa

JEP 286: Paikallisvaihtelijan päätelmä

10 asiaa Java-kehittäjän pitäisi oppia vuonna 2018

Täydellinen Java MasterClass oppia Java paremmin

Kiitos tämän artikkelin lukemisesta. Jos pidät tästä uudesta Java 10 -ominaisuudesta, jaa se ystäviesi ja kollegojesi kanssa.

Jos sinulla on kysyttävää tai palautetta, pudota muistiinpano ja pysy kuulolla lisää Java 10 -oppaita ja artikkeleita täällä.

Alun perin julkaistu osoitteessa javarevisited.blogspot.com 27. maaliskuuta 2018.