Ohjelmointi

Java-vinkki 5: Java-vakiot

Tällä viikolla luomme joitain vakioita, joilla on kaikki edut käyttämällä C-esiprosessorin toimintoja määritettäessä kääntöaikavakioita ja ehdollisesti koottuja koodeja.

Java on päässyt eroon tekstinkäsittelijän koko käsitteestä (jos Java otetaan C / C ++: n "jälkeläiseksi"). Voimme kuitenkin saada parhaat edut ainakin joistakin Java-esiprosessorin C-ominaisuuksista: vakiot ja ehdollinen kokoaminen.

Yksi C-esiprosessorin kiistattomasti hyvistä ominaisuuksista on kyky määritellä kääntöaikavakioita käyttämällä tekstinimeä jonkin arvon edustamiseksi. Tämä helpottaa lukemista ja ylläpitoa. Se on myös nopeampi ajon aikana kuin normaalin muuttujan käyttö.

C-esiprosessorin väitetysti väärin käytetty ominaisuus on #määritellä kera #ifdef ja ystävät koota ehdollisesti kokonaiset koodilohkot. Sanon sen olevan kiistanalaista, koska ihmiset käyttävät tätä mahdollisuutta usein alustakohtaisten ongelmien käsittelemiseen (ja se on molemmat hyvä asia ja huono kohta).

C: ssä voisi määritellä joitain vakioita otsikkotiedostoon:

#define MY_BDATE 10 #define SILLY_PLATFORM 

ja sitten pääsy noihin vakioihin käyttämällä #sisältää sisällyttää ne kooditiedostoon ja käyttää niitä sitten:

fprintf (stderr, "Syntymäpäiväni on% d" "th! \ n", MY_BDATE); 

Java-vastaava voidaan tehdä luomalla julkinen staattinen finaali muuttujat Java: ssa käyttöliittymä:

käyttöliittymä ConstantStuff {public static final int MY_BDATE = 10; public staattinen lopullinen looginen SillyPlatform = true; } 

Sitten voimme käyttää niitä käyttämällä tuonti tehdä käyttöliittymä näkyväksi meille ja käyttää sitten vakioita:

System.out.println ("Syntymäpäiväni on" + ConstantStuff.MY_BDATE + "th!"); 

C-esiprosessori voi ehdollisesti poistaa suuria alueita tekstistä, jos tietty esiprosessorin vakio oli määritelty tai sitä ei ollut määritelty.

#if define (SILLY_PLATFORM) / * Paljon ikäviä koodeja käsittelemään * SILLY -alustan tyhmyyksiä. * / #else / * Koodi muiden normaalien alustojen käsittelemiseksi. */ #loppu Jos 

Monet ihmiset valittavat, että tämä ominaisuus puuttuu Java-ohjelmasta. Muista, että yksi syy siihen, että Java on niin upea, on se, että kieli on määritelty paljon paremmin, joten tällaisen järjestelmäkohtaisen koodin pitäisi olla ei jopa olla tarpeen.

Oli niin, saatat silti saada tällaisen ehdollisesti kootun koodin suoraan kääntäjältä! Sinä vain käytät julkinen staattinen lopullinen totuusarvo vakiot säännöllisen ehdoksi jos lausunto. Java-kääntäjä on tarpeeksi älykäs tunnistamaan sen erityistapauksena ja se voi poistaa testin ja asianmukaisen ehdollisen haaran koodin kokonaan.

Joten kirjoita vain ehdollinen lause tavalliseen tapaan.

 if (ConstantStuff.SillyPlatform) {// Koodi, jota käytetään, jos alusta on tosi * kääntöhetkellä *. } else {// Koodi, jota käytetään, jos alusta on väärä * kääntöhetkellä *. } 

En tiedä sinusta, mutta inhoan, että minun on kirjoitettava niin kauan käyttöliittymä nimi ennen minkä tahansa vakion käyttöä. Joten, minulla on vain luokkani, joka aikoo käyttää näitä vakioita toteuttaa käyttöliittymä. Sitten voin vain käyttää nimeä suoraan, olettaen, että nimien kanssa ei ole ristiriitoja (jolloin sinun on erotettava ne käyttämällä täydellisiä nimiä).

Olen koonnut kaikki nämä hauskat asiat pari yksinkertaista Java-sovellusta. Vakiot (//www.javaworld.com/javatips/javatip5/Constants.java) työvälineet käyttöliittymä ja käyttää vakioita suoraan, kun taas Vakiot2 (//www.javaworld.com/javatips/javatip5/Constants2.java) käyttää täysin päteviä nimiä vakioiden käyttämiseen.

John D.Mitchell on jälleen yksi UC-Berkeleyn tietojenkäsittelytieteen tutkinto, joka on vieroitettu kofeiinista, sokerista ja liian vähän unta. Hän vietti kolme vuotta töitä PDA-ohjelmistoilla Geoworksissa varastossa, joka on todellakin enemmän kuin taustakuva. Hän pelasti päivätyönsä ensimmäisen Java-julkisen julkaisun jälkeen sovelmien ja Java-kääntäjän kehittämiseksi. Hän rahoittaa Java-riippuvuutensa kirjoittamalla kääntäjiä, Tcl / Tk, Perl, C ++ ja Java-järjestelmiä. Hänen runsaasti vapaa-aikaa kuluu valvomalla comp.lang.tcl.announce-uutisryhmää ja kirjoittamalla mahtava Java-kirja.

Tämän tarinan, "Java Tip 5: Java-vakiot", julkaisi alun perin JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found