Προγραμματισμός

GetBoolean του Java Boolean: Χρήσιμο αν και ατελές

Η μέθοδος Boolean.getBoolean (String) είναι μια στατική μέθοδος που μπορεί να είναι χρήσιμη τώρα και ξανά. Είναι πολύ εύκολο να συγχέουμε αυτή τη μέθοδο ως μέθοδο που επιστρέφει κάπως το κατάλληλο Boolean με βάση την παρεχόμενη συμβολοσειρά (όπως αυτό που κάνουν οι Boolean.valueOf (String) και Boolean.parseBoolean (String)), αλλά η τεκμηρίωση Javadoc για αυτήν τη μέθοδο εξηγεί τι πραγματικά: το Boolean.getBoolean (συμβολοσειρά) μέθοδος "Επιστρέφει true εάν και μόνο εάν η ιδιότητα συστήματος που ονομάζεται από το όρισμα υπάρχει και είναι ίση με τη συμβολοσειρά" true "."

ο Boolean.getBoolean (συμβολοσειρά) Η μέθοδος παρέχει στους προγραμματιστές μια μέθοδο για τον προσδιορισμό εάν μια συγκεκριμένη ιδιότητα έχει οριστεί σε "true". Επιστρέφει "true" μόνο εάν η ιδιότητα έχει οριστεί και η τιμή στην οποία ορίζεται είναι κάποια μορφή "true" όπου η περίπτωση του "true" δεν έχει σημασία. Η περίπτωση του ίδιου του ονόματος ιδιοκτησίας είναι πεζά, αλλά η τιμή της ("true", "TRUE", "trUE", "TRue", etc.) είναι πεζά σεευαίσθητος.

Ο ακόλουθος κώδικας Java δείχνει Boolean.getBoolean (συμβολοσειρά) εν ΔΡΑΣΕΙ.

ΕπίδειξηBooleanGetBoolean.java

πακέτο dustin.example; εισαγωγή στατικού java.lang.System.out; / ** * Δείξτε τη χρησιμότητα του Boolean.getBoolean (String) παρά το ζήτημα ονομασίας *. * / public class DemonstrateBooleanGetBoolean {/ ** * Κύρια λειτουργία για την εκτέλεση παραδειγμάτων που δείχνουν τη χρήση και τα εφέ του * Boolean.getBoolean (String) * / public static void main (final επιχειρήματα String []) {final String basicPropertyName = "i.am.here"; final String basicUppercasePropertyName = basicPropertyName.toUpperCase (); τελικό String were HereProperty = "were.here.property"; τελικό συμβολοσειρά wasHereProperty = "was.here.property"; out.println (basicPropertyName + "είναι" + Boolean.getBoolean (basicPropertyName)); out.println (basicUppercasePropertyName + "είναι" + Boolean.getBoolean (basicUppercasePropertyName)); out.println (wereHereProperty + "είναι" + Boolean.getBoolean (wereHereProperty)); out.println (wasHereProperty + "είναι" + Boolean.getBoolean (wasHereProperty)); if (Boolean.getBoolean ("i.am.set")) {System.out.println ("Είμαι έτοιμος !!!"); } αλλιώς {System.out.println ("ΔΕΝ είμαι έτοιμος !!!"); }}} 

Εκτελώντας την παραπάνω κλάση με ιδιότητες που καθορίζονται μέσω της επιλογής εκκίνησης εφαρμογών Java -D, οι αποχρώσεις του Boolean.getBoolean (συμβολοσειρά) αποδεικνύονται. Τα αποτελέσματα που περιλαμβάνονται στο επόμενο στιγμιότυπο οθόνης δείχνουν ότι Boolean.getBoolean (συμβολοσειρά) πράγματι επιστρέφει αληθής όταν ένα συγκεκριμένο όνομα ιδιοκτησίας καθορίζεται και ορίζεται με μια τιμή συμβολοσειράς "true" με οποιαδήποτε περίπτωση για τα τέσσερα γράμματα που συνθέτουν το "true". Από την άλλη πλευρά, η αλλαγή της περίπτωσης του ονόματος της ιδιοκτησίας επηρεάζει τα αποτελέσματα του Boolean.getBoolean (συμβολοσειρά). Με άλλα λόγια, ενώ το "true" και το "TRUE" είναι τα ίδια από μια ιδιότητα αξία προοπτική, "i.am.here" και "I.AM.HERE" είναι εντελώς διαφορετικά ονόματα ιδιοτήτων από το όνομα ιδιοκτησίας προοπτική.

Υπάρχουν πολλές χρήσεις για το Boolean.getBoolean (συμβολοσειρά) μέθοδος, συμπεριλαμβανομένης της λογικής χρόνου εκτέλεσης υπό όρους, βάσει του εάν έχει οριστεί μια παράμετρος ή όχι. Η ανάρτηση ιστολογίου Παρακαλώ χρησιμοποιήστε το Boolean.getBoolean (SOME_FLAG_KEY) καλύπτει αυτήν τη χρήση με περισσότερες λεπτομέρειες.

Αν και αυτή η μέθοδος είναι εξαιρετικά χρήσιμη, δεν υπάρχει αμφιβολία ότι δεν ονομάστηκε τόσο καλά όσο θα μπορούσε να ήταν. Αρκετές αναρτήσεις ιστολογίου εκφράζουν την απογοήτευση των προγραμματιστών Java με αυτήν την επιλογή ονομάτων API και την κλάση φιλοξενίας για τη στατική μέθοδο: Έπεσα στο Trap of Boolean.getBoolean () [Οκτώβριος 2007], Java API Pitfalls: Boolean.getBoolean (String) [Οκτώβριος 2005 ], Κάποια διασκέδαση με το Boolean.getBoolean (String) [Ιούλιος 2009], το Boolean.getBoolean όχι αυτό που νομίζετε ότι είναι [Οκτώβριος 2003] και το Boolean.getBoolean (String) [αυτό το μήνα!].

συμπέρασμα

βρίσκω Boolean.getBoolean (συμβολοσειρά) να είναι μια πολύ χρήσιμη μέθοδος μερικές φορές, αλλά συμφωνώ επίσης με άλλους προγραμματιστές Java που αναφέρονται παραπάνω ότι δεν είναι μια από τις καλύτερες αποφάσεις API. Όπως έχουν προτείνει αρκετοί άλλοι, φαίνεται ότι μπορεί να ταιριάζει καλύτερα στην κλάση java.lang.System και θα προτιμούσα ένα όνομα μεθόδου όπως "isPropertyTrue (String)". Τούτου λεχθέντος, όταν κάποιος γνωρίζει αυτήν την λεπτότητα και τη διάκριση μεταξύ Boolean.getBoolean (String) και Boolean.valueOf (String) (ή Boolean.parseBoolean (String), διαθέσιμη από το J2SE 5), και οι δύο μέθοδοι μπορούν να εφαρμοστούν κατάλληλα και να είναι πολύτιμη σε ορισμένες περιπτώσεις.

Αυτή η ιστορία, "JavaBoolean's getBoolean: Useful Albeit Imperfect" δημοσιεύθηκε αρχικά από την JavaWorld.

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