Programovanie

Java Boolean's getBoolean: užitočné, aj keď nedokonalé

Metóda Boolean.getBoolean (String) je statická metóda, ktorá môže byť občas užitočná. Je veľmi ľahké zameniť túto metódu za metódu, ktorá nejakým spôsobom vráti vhodný Boolean na základe poskytnutého reťazca (napríklad toho, čo robia Boolean.valueOf (String) a Boolean.parseBoolean (String)), ale dokumentácia Javadoc k tejto metóde vysvetľuje, čo to naozaj: Boolean.getBoolean (reťazec) metóda "Vráti hodnotu true vtedy a len vtedy, ak existuje systémová vlastnosť pomenovaná argumentom a rovná sa reťazcu 'true'."

The Boolean.getBoolean (reťazec) metóda poskytuje vývojárom metódu na určenie, či je konkrétna vlastnosť nastavená na „true“. Vráti hodnotu „true“, iba ak je definovaná vlastnosť a hodnota, na ktorú je definovaná, je nejakou formou „true“, na ktorej nezáleží na prípade „true“. V samotnom názve vlastnosti sa rozlišujú malé a veľké písmená, ale v jeho hodnote („true“, „TRUE“, „trUE“, „TRue“ atď.) Sa rozlišujú malé a veľké písmená. vcitlivý.

Nasledujúci kód Java demonštruje Boolean.getBoolean (reťazec) v akcii.

DemonstrateBooleanGetBoolean.java

balenie zásypu.príklady; importovať statický java.lang.System.out; / ** * Ukážte užitočnosť Boolean.getBoolean (String) napriek problému s pomenovaním *. * / public class DemonstrateBooleanGetBoolean {/ ** * Hlavná funkcia na vykonávanie príkladov demonštrujúcich použitie a účinky * Boolean.getBoolean (reťazec). * / public static void main (final argumenty String []) {final String basicPropertyName = "i.am.here"; final String basicUppercasePropertyName = basicPropertyName.toUpperCase (); finálny reťazec wereHereProperty = "were.here.property"; finálny reťazec wasHereProperty = "was.here.property"; out.println (basicPropertyName + "je" + Boolean.getBoolean (basicPropertyName)); out.println (basicUppercasePropertyName + "je" + Boolean.getBoolean (basicUppercasePropertyName)); out.println (wereHereProperty + "je" + Boolean.getBoolean (wereHereProperty)); out.println (wasHereProperty + "je" + Boolean.getBoolean (wasHereProperty)); if (Boolean.getBoolean ("i.am.set")) {System.out.println ("Som nastavený !!!"); } else {System.out.println ("NIE SOM nastavený !!!"); }}} 

Vykonaním vyššie uvedenej triedy s vlastnosťami zadanými prostredníctvom možnosti -D spúšťača aplikácií Java budú nuansy znaku Boolean.getBoolean (reťazec) sú preukázané. Výsledky obsiahnuté v nasledujúcej snímke obrazovky to naznačujú Boolean.getBoolean (reťazec) skutočne sa vráti pravda keď je zadaný názov konkrétnej vlastnosti a je definovaný hodnotou reťazca „true“, v prípade štyroch písmen, ktoré tvoria „true“, v každom prípade. Na druhej strane zmena veľkosti písmen názvu vlastnosti ovplyvňuje výsledky Boolean.getBoolean (reťazec). Inými slovami, zatiaľ čo „true“ a „TRUE“ sú z vlastníctva rovnaké hodnotu perspektíva, „i.am.here“ a „I.AM. HERE“ sú úplne odlišné názvy nehnuteľností od a názov nehnuteľnosti perspektíva.

Existuje niekoľko použití pre Boolean.getBoolean (reťazec) metóda zahŕňajúca podmienenú runtime logiku založenú na tom, či je parameter nastavený alebo nie. Príspevok na blogu Použite Boolean.getBoolean (SOME_FLAG_KEY) toto použitie pokrýva podrobnejšie.

Aj keď je táto metóda veľmi užitočná, je nepochybné, že nie je tak dobre pomenovaná, ako by mohla byť. Niekoľko blogových príspevkov vyjadruje sklamanie vývojárov Javy z tejto voľby pomenovania API a triedy hosťovania pre statickú metódu: Padol som do pasce Boolean.getBoolean () [október 2007], úskalia Java API: Boolean.getBoolean (reťazec) [október 2005 ], Some Fun with Boolean.getBoolean (String) [July 2009], Boolean.getBoolean not what you think it is [October 2003], and Ever Been Busted by Boolean.getBoolean (String) [this month!].

Záver

nájdem Boolean.getBoolean (reťazec) byť niekedy veľmi užitočnou metódou, ale tiež súhlasím s ďalšími vyššie uvedenými vývojármi Java, že nejde o jedno z lepších rozhodnutí API. Ako navrhlo niekoľko ďalších, zdá sa, že by to mohlo lepšie zapadnúť do triedy java.lang.System, a ja by som uprednostnil názov metódy ako napríklad „isPropertyTrue (String)“. Akonáhle si človek uvedomí túto jemnosť a rozdiel medzi Boolean.getBoolean (String) a Boolean.valueOf (String) (alebo Boolean.parseBoolean (String), ktorý je k dispozícii od J2SE 5), je možné obidve metódy vhodne použiť byť v určitých situáciách veľmi cenný.

Tento príbeh „Java Boolean's getBoolean: Useful Albeit Imperfect“ bol pôvodne publikovaný spoločnosťou JavaWorld.

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