Programmering

Java Boolean's getBoolean: Nyttig om enn ufullkommen

Boolean.getBoolean (String) -metoden er en statisk metode som kan være nyttig nå og da. Det er veldig enkelt å forveksle denne metoden som en som på en eller annen måte returnerer riktig boolsk basert på den angitte strengen (for eksempel hva Boolean.valueOf (String) og Boolean.parseBoolean (String) gjør), men Javadoc-dokumentasjonen for denne metoden forklarer hva den er virkelig gjør: den Boolean.getBoolean (streng) metode "Returnerer sant hvis og bare hvis systemegenskapen navngitt av argumentet eksisterer og er lik strengen" true "."

De Boolean.getBoolean (streng) metoden gir utviklere en metode for å bestemme om en bestemt eiendom er satt til "sann". Den returnerer bare "sant" hvis egenskapen er definert og verdien den er definert til er en eller annen form for "sant" der tilfellet "sant" ikke betyr noe. Tilfellet med selve eiendomsnavnet er mellom store og små bokstaver, men verdien ("sann", "SANT", "SANN", "SANN" osv.) Er stor ifølsom.

Følgende Java-kode demonstrerer Boolean.getBoolean (streng) i aksjon.

DemonstrerBooleanGetBoolean.java

pakke dustin. eksempler; importere statisk java.lang.System.out; / ** * Demonstrer nytten av Boolean.getBoolean (String) til tross for navnet *. * / public class DemonstrateBooleanGetBoolean {/ ** * Hovedfunksjon for å utføre eksempler som viser bruk og effekter av * Boolean.getBoolean (String). * / public static void main (final String [] argumenter) {final String basicPropertyName = "i.am.here"; endelig streng basicUppercasePropertyName = basicPropertyName.toUpperCase (); final String wereHereProperty = "were.here.property"; final String wasHereProperty = "was.here.property"; out.println (basicPropertyName + "er" + Boolean.getBoolean (basicPropertyName)); out.println (basicUppercasePropertyName + "er" + Boolean.getBoolean (basicUppercasePropertyName)); out.println (wereHereProperty + "er" + Boolean.getBoolean (wereHereProperty)); out.println (wasHereProperty + "er" + Boolean.getBoolean (wasHereProperty)); hvis (Boolean.getBoolean ("i.am.set")) {System.out.println ("Jeg er klar !!!"); } annet {System.out.println ("Jeg er IKKE klar !!!"); }}} 

Ved å utføre den ovennevnte klassen med egenskaper spesifisert via Java-applikasjonsstarterens -D-alternativet, vil nyansene til Boolean.getBoolean (streng) blir demonstrert. Resultatene i neste skjermbilde viser at Boolean.getBoolean (streng) kommer faktisk tilbake ekte når et bestemt eiendomsnavn er spesifisert og er definert med en strengverdi på "true", uansett sak for de fire bokstavene som utgjør "true". På den annen side påvirker endringen av eiendomsnavnet resultatene av Boolean.getBoolean (streng). Med andre ord, mens "true" og "TRUE" er de samme fra en eiendom verdi perspektiv, "i.am.here" og "I.AM.HERE" er helt forskjellige eiendomsnavn fra a eiendomsnavn perspektiv.

Det er flere bruksområder for Boolean.getBoolean (streng) metode inkludert betinget kjøretidslogikk basert på om en parameter er satt eller ikke. Blogginnlegget Bruk Boolean.getBoolean (SOME_FLAG_KEY) dekker denne bruken mer detaljert.

Selv om denne metoden er svært nyttig, er det ingen tvil om at den ikke er så godt kalt som den kunne ha vært. Flere blogginnlegg uttrykker Java-utvikleres skuffelse over dette API-navngivningsvalget og vertskapsklassen for den statiske metoden: I Fell in the Trap of Boolean.getBoolean () [October 2007], Java API Pitfalls: Boolean.getBoolean (String) [October 2005 ], Some Fun with Boolean.getBoolean (String) [Juli 2009], Boolean.getBoolean ikke hva du tror det er [Oktober 2003], og Ever Been Busted av Boolean.getBoolean (String) [denne måneden!].

Konklusjon

jeg finner Boolean.getBoolean (streng) å være en veldig nyttig metode til tider, men jeg er også enig med andre Java-utviklere som er sitert ovenfor om at det ikke er en av de bedre API-beslutningene. Som flere andre har antydet, virker det som om det kanskje hadde passet bedre i klassen java.lang.System, og jeg ville ha foretrukket et metodenavn som "isPropertyTrue (String)". Når det er sagt, når man først er klar over denne subtiliteten og skillet mellom Boolean.getBoolean (String) og Boolean.valueOf (String) (eller Boolean.parseBoolean (String), tilgjengelig siden J2SE 5), kan begge metodene brukes riktig og være svært verdifull i visse situasjoner.

Denne historien, "Java Boolean's getBoolean: Useful Albeit Imperfect" ble opprinnelig utgitt av JavaWorld.

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