Η λειτουργικότητα γενικός τύπος επιτρέπει στον προγραμματιστή να προαιρετικά καθορίσει το είδος των αξιών που είναι αποθηκευμένα στα ενσωματωμένα στις τάξεις της συλλογής , όπως HashMap και ArrayList . Αυτό αντικαθιστά τον κωδικό 1.4 :
ArrayList δεδομένων = νέα ArrayList ( ) ?
Data.add ( νέο διπλό ( 4,0 ) ) ?
Διπλό value = ( διπλό ) δεδομένων . πάρει ( 0 ) ?
Με το 1,5 κωδικός:
ArrayList data.add ( νέο διπλό ( 4.0 ) ? διπλό value = data.get ( 0 ) ? . Η δήλωση του ArrayList γίνεται ελαφρώς πιο δυσκίνητο , αλλά οι προγραμματιστές μπορούν να αναγνωρίσουν τα οφέλη Ο compiler χειρίζεται πλέον το casting δεδομένων και η συντριβή δυνητικά προκαλούν σφάλμα ρίχνει στην τρίτη γραμμή του κώδικα 1.4 αλιεύονται κατά τη μεταγλώττιση . Μία από τις ασήμαντες οχλήσεις έχει απομακρυνθεί από την εργασία με τις συλλογές αντικειμένων , καθώς και. τις περισσότερες φορές , οι πρώτες αριθμητικά δεδομένα θα αποθηκεύονται σε πρωτόγονη , τύπους δεδομένων μη-αντικειμένου , όπως int και το διπλό . Ωστόσο, μόνο το αντικείμενο , ισοδύναμα ταξικά τους μπορούν να αποθηκευτούν σε μια συλλογή . σε 1.4 , ο προγραμματιστής έπρεπε να δημιουργήσετε χειροκίνητα ένα νέο αντικείμενο κάθε φορά που αυτός ή αυτή ήθελε να αποθηκεύσετε έναν αριθμό σε μια συλλογή , και ρίχνει πίσω σε μια πρωτόγονη τύπο δεδομένων όταν τράβηξε έξω . Autoboxing επιτρέπει Java για να χειριστεί αυτό αυτόματα , έτσι ώστε ο κώδικας : data.add ( νέο διπλό ( 4,0 ) ) ? Μπορεί τώρα να αντικατασταθεί με : data.add ( 4,0) ? Java θα χειριστεί αυτόματα τη μετατροπή από το " διπλό" στο " Double" . κατά την αποθήκευση των δεδομένων σε μια σειρά ή κάποιο από τα στοιχεία της συλλογής δομές , ο προγραμματιστής μπορεί να περιορίσουν το παραδοσιακό για βρόχο από το γνωστό : για ( int x = 0 ? x //κάνει κάτι με κάθε διπλό στο "δεδομένα" } Για το πιο συμπαγές και εύκολο να διαβαστεί : για ( Double d: δεδομένα) { //do κάτι με κάθε διπλό στο "δεδομένα" } Java 1.5 προστίθεται το είδος «enum» με τη γλώσσα . Παραδοσιακά , εάν ένας προγραμματιστής ήθελε να παρακολουθείτε όλες τις πιθανές τιμές του επιλογή , αυτός ή αυτή έπρεπε να απεικονίζει λέξεις σε ακέραιους αριθμούς , χρησιμοποιώντας την "τελική στατική int " τύπο δεδομένων , όπως: δημόσια τάξη Stoplight { int = 0 ? τελική στατική int RED = 0 ? τελική στατική int ΚΙΤΡΙΝΟ = 1 ? τελική στατική int ΠΡΑΣΙΝΟ = 2 ? } Αυτό ήταν κουραστική και bug- επιρρεπής Για παράδειγμα , τι θα συμβεί αν το χρώμα γίνεται Enum κάνει η λύση πολύ πιο κομψό " 4 ; " : Stoplight Color = Stoplight.RED ? Stoplight δημόσια enum { ΚΟΚΚΙΝΟ , ΚΙΤΡΙΝΟ , ΠΡΑΣΙΝΟ } ? Σε αντίθεση με την παλιά « τελικό στατική» τρόπο , ο compiler ξέρει πλέον τι έγκυρες επιλογές είναι για το « φώτων στοπ » και να τους επιβάλλουν για μας . ως πρόσθετο πλεονέκτημα , αν η αξία του " χρώμα" είναι τυπωμένη στην κονσόλα , θα εκτυπώσει ως αγγλική λέξη , και όχι ως αριθμός.
εικόνων Autoboxing
Η
Η Ενισχυμένη για Loop
Η
εικόνων Απαριθμούνται Τύποι
Η
χρώμα
.
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα