Programovanie

Tip Java 5: Konstanty Java

Tento týždeň vytvoríme niekoľko konštánt, ktoré majú všetky výhody používania zariadení preprocesora C na definovanie konštánt kompilácie a podmieneného kompilácie kódu.

Java sa zbavila celého poňatia textového preprocesora (ak beriete Javu ako „potomka“ C / C ++). Môžeme však získať tie najlepšie výhody aspoň niektorých funkcií preprocesora C v Jave: konštanty a podmienená kompilácia.

Jednou z nepochybne dobrých vlastností preprocesora C je schopnosť definovať konštanty kompilácie pomocou textového názvu, ktorý predstavuje určitú hodnotu. To uľahčuje čítanie a údržbu. Je to tiež rýchlejšie za behu, ako používať normálnu premennú.

Pravdepodobne zneužitou vlastnosťou preprocesora C je použitie # definovať spolu s #ifdef a priatelia podmienene zostaviť celé bloky kódu. Hovorím, že je to diskutabilné, pretože ľudia často používajú toto zariadenie na riešenie problémov špecifických pre jednotlivé platformy (a to je dobré aj to, aj keď.) a zlý bod).

V jazyku C je možné definovať niektoré konštanty v hlavičkovom súbore pomocou:

#define MY_BDATE 10 #define SILLY_PLATFORM 

a potom získanie prístupu k týmto konštantám pomocou #include zahrnúť ich do súboru s kódom a potom ich použiť:

fprintf (stderr, "Moje narodeniny sú dňa% d" "th! \ n", MY_BDATE); 

Ekvivalent v Jave je možné vytvoriť vytvorením verejné statické finále premenné v prostredí Java rozhranie:

rozhranie ConstantStuff {public static final int MY_BDATE = 10; public static final boolean SillyPlatform = true; } 

Potom k nim môžeme získať prístup pomocou dovoz aby sme nám rozhranie zviditeľnili a potom použili konštanty:

System.out.println ("Moje narodeniny sú" + ConstantStuff.MY_BDATE + "th!"); 

Preprocesor C môže podmienene vyrezávať veľké oblasti textu, ak daná konštanta preprocesora bola alebo nebola definovaná.

#if defined (SILLY_PLATFORM) / * Veľa nepríjemného kódu na vyrovnanie sa s hlúposťami platformy * SILLY. * / #else / * Kód na prácu s inými, bežnými platformami. */ #koniec Ak 

Mnoho ľudí narieka, že táto schopnosť v Jave chýba. Pamätajte, že jedným z dôvodov, prečo je Java taká úžasná, je skutočnosť, že jazyk je oveľa lepšie definovaný, takže by tento špecifický systémový kód mal nie dokonca nevyhnutné.

Nech je to už akokoľvek, tento druh podmienene skompilovaného kódu môžete získať priamo z kompilátora priamo! Stačí použiť public static final boolean konštanty ako podmienka pre regulárny ak vyhlásenie. Kompilátor Java je dostatočne inteligentný na to, aby to rozpoznal ako špeciálny prípad, a môže úplne vylúčiť test a kód príslušnej podmienenej vetvy.

Stačí teda napísať podmienené vyhlásenie ako obvykle.

 if (ConstantStuff.SillyPlatform) {// Kód, ktorý sa použije, ak je platforma pravdivá * v čase kompilácie *. } else {// Kód, ktorý sa má použiť, ak je platforma nepravdivá * v čase kompilácie *. } 

Neviem ako vy, ale neznášam, keď to musím písať siahodlhé rozhranie pred použitím ktorejkoľvek z týchto konštánt. Takže, mám svoju triedu, ktorá bude používať tieto konštanty realizovať the rozhranie. Potom môžem iba priamo použiť meno za predpokladu, že nedôjde k nijakým stretom mien (v takom prípade ich budete musieť rozlíšiť pomocou celých mien).

Všetky tieto zábavné veci som spojil do niekoľkých jednoduchých aplikácií Java. Konštanty (//www.javaworld.com/javatips/javatip5/Constants.java) náradie the rozhranie a používa konštanty priamo, zatiaľ čo Constants2 (//www.javaworld.com/javatips/javatip5/Constants2.java) používa na prístup ku konštantám plne kvalifikované názvy.

John D. Mitchell je ďalším absolventom počítačovej vedy z UC-Berkeley, ktorý odstavil od kofeínu, cukru a príliš malého spánku. Tri roky pracoval na softvéri PDA v spoločnosti Geoworks za zásoby, ktoré majú v skutočnosti vyššiu hodnotu ako tapeta. Po prvom verejnom vydaní Javy zachránil svoju dennú prácu pri vývoji appletov a kompilátora Java. Financuje svoju závislosť na Jave písaním kompilátorov, systémov Tcl / Tk, Perl, C ++ a Java. Jeho dostatok voľného času strávi moderovaním komp.lang.tcl. Oznamovacej diskusnej skupiny a napísaním úžasnej knihy v jazyku Java.

Tento príbeh, „Java Tip 5: Java constants“, bol pôvodne publikovaný spoločnosťou JavaWorld.

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