Σπίτι Προσωπικά Οικονομικά Προγραμματισμός Java: Όλα για Generics - dummies

Προγραμματισμός Java: Όλα για Generics - dummies

Βίντεο: Java Tutorial Στα Ελληνικά - Μάθημα #13 : Abstract & Interfaces 2024

Βίντεο: Java Tutorial Στα Ελληνικά - Μάθημα #13 : Abstract & Interfaces 2024
Anonim

Ένας από τους πρωτότυπους στόχους σχεδιασμού για την Java ήταν να κρατήσει τη γλώσσα όσο το δυνατόν πιο απλή. Ο προγραμματιστής της γλώσσας πήρε κάποιες άσκοπα περίπλοκες λειτουργίες της C ++ και τους έριξε έξω από το παράθυρο. Το αποτέλεσμα ήταν μια γλώσσα που ήταν κομψή και κομψή. Μερικοί άνθρωποι δήλωσαν ότι η γλώσσα ήταν πολύ κομψή.

Έτσι, μετά από αρκετά χρόνια συζήτησης και μάχης, η Java έγινε λίγο πιο περίπλοκη. Μέχρι το 2004, η Java είχε τύπους enum, ενισχυμένη για βρόχους, στατική εισαγωγή και μερικά άλλα ενδιαφέροντα νέα χαρακτηριστικά. Αλλά το νέο χαρακτηριστικό που μιλούσε περισσότερο ήταν η εισαγωγή γενόσημων φαρμάκων.

ArrayList άτομα = νέο ArrayList ();

Η χρήση οποιουδήποτε τύπου ήταν καινούργιου στην Java 5. 0. Σε παλαιά Java, θα γράφετε

ArrayList people = new ArrayList ();

Σε εκείνες τις ημέρες, ένα ArrayList θα μπορούσε να αποθηκεύσει σχεδόν οτιδήποτε θέλατε να το βάλετε - έναν αριθμό, έναν Λογαριασμό, ένα Δωμάτιο, ένα String … τίποτα. Η κατηγορία ArrayList ήταν πολύ ευπροσάρμοστη, αλλά με αυτήν την ευελιξία ήρθαν μερικοί πονοκεφάλοι. Αν μπορούσατε να βάλετε τίποτα σε ένα ArrayList, δεν θα μπορούσατε εύκολα να προβλέψετε τι θα βγάλετε από ένα ArrayList.

Συγκεκριμένα, δεν μπορείτε να γράψετε εύκολα κώδικα που υποθέτει ότι έχετε αποθηκεύσει ορισμένους τύπους τιμών στο ArrayList. Ακολουθεί ένα παράδειγμα:

ArrayList things = new ArrayList (); πράγματα. προσθέστε (νέο λογαριασμό ()); Λογαριασμός myAccount = πράγματα. get (0); // ΜΗΝ ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΑΥΤΗ. Είναι κακό ΚΩΔΙΚΟΣ.

Στην τρίτη γραμμή, η κλήση για να πάρει (0) αρπάζει την παλαιότερη τιμή στη συλλογή στοιχείων. Η κλήση για να πάρει (0) είναι εντάξει, αλλά στη συνέχεια ο συντάκτης τσοκάρει την απόπειρα ανάθεσης στο myAccount. Έχετε ένα μήνυμα στην τρίτη γραμμή λέγοντας ότι οτιδήποτε παίρνετε από τη λίστα των πραγμάτων δεν μπορεί να γεμίσει στη μεταβλητή myAccount.

Λαμβάνετε αυτό το μήνυμα επειδή, από τη στιγμή που ο μεταγλωττιστής φτάνει στην τρίτη γραμμή, έχει ξεχάσει ότι το στοιχείο που προστέθηκε στη δεύτερη γραμμή ήταν τύπου Λογαριασμός!

Η εισαγωγή γενικών εντοπίζει αυτό το πρόβλημα:

ArrayList things = new ArrayList (); πράγματα. προσθέστε (νέο λογαριασμό ()); Λογαριασμός myAccount = πράγματα. get (0); // ΧΡΗΣΙΜΟΠΟΙΗΣΕΤΕ ΑΥΤΟ ΤΟ ΚΩΔΙΚΟ ΕΝΑΡΞΗΣ Είναι καλός κώδικας.

Η προσθήκη σε δύο μέρη λέει στον μεταγλωττιστή ότι τα στοιχεία αποθηκεύουν τις εμφανίσεις του λογαριασμού - τίποτα άλλο. Έτσι, στην τρίτη γραμμή στον προηγούμενο κώδικα, παίρνετε μια αξία από τη συλλογή πραγμάτων. Στη συνέχεια, επειδή τα πράγματα αποθηκεύουν μόνο αντικείμενα λογαριασμού, μπορείτε να κάνετε το myAccount να αναφερθεί σε αυτή τη νέα τιμή.

Java 5. 0 πρόσθεσε γενικά στη Java. Αλλά σύντομα μετά τη γέννηση της Java 5. 0, οι προγραμματιστές παρατήρησαν πόσο αδέξια μπορεί να είναι ο κώδικας για τα γενόσημα.Μετά από όλα, μπορείτε να δημιουργήσετε γενόσημα μέσα στα γενόσημα. Ένα ArrayList μπορεί να περιέχει μια δέσμη συστοιχιών, καθένα από τα οποία μπορεί να είναι ένα ArrayList. Έτσι μπορείτε να γράψετε

ArrayList  mess = new ArrayList  ();

Όλη η επανάληψη σε αυτή τη δήλωση χάος δίνει στους προγραμματιστές έναν πονοκέφαλο! Για να αποφύγετε αυτή την ασχήμια, οι εκδόσεις Java 7 και νεότερες εκδόσεις έχουν χειριστή διαμαντιών , . Ο χειριστής διαμαντιών λέει στην Java να επαναχρησιμοποιήσει ό, τι αλάνθαστα περίπλοκο υλικό που βάλατε στο προηγούμενο τμήμα της γενικής δήλωσης.

, παρόλο που γράφετε μόνο μία φορά. Ορίστε πώς φαίνεται ο βελτιωμένος κώδικας Java 7: ArrayList

mess = new ArrayList  (); Στην Java 7 και μεταγενέστερα, μπορείτε να γράψετε μία από αυτές τις δηλώσεις mess - την πρωτότυπη, δυσάρεστη δήλωση με δύο εμφανίσεις του ArrayList [] ή την απλοποιημένη δήλωση με τον διαχειριστή διαμαντιών και μόνο με ένα ArrayList [] περιστατικό.

Ναι, ο βελτιωμένος κώδικας εξακολουθεί να είναι περίπλοκος. Αλλά χωρίς την επανάληψη του ArrayList [], ο βελτιωμένος κώδικας είναι λιγότερο επαχθής. Ο χειριστής διαμαντιών Java 7 αφαιρεί μια ευκαιρία για να αντιγράψετε κάτι εσφαλμένα και να έχετε ένα μεγάλο λάθος στον κωδικό σας.

Προγραμματισμός Java: Όλα για Generics - dummies

Η επιλογή των συντακτών

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Πρόσβαση χωρίς σύνδεση με το SharePoint Online Workspace - ανδρείκελοι

Microsoft SharePoint Workspace είναι ο καλλιτέχνης παλαιότερα γνωστός ως Microsoft Office Groove desktop εφαρμογή προσαρμοσμένη για άτομα που θέλουν να συνεργάζονται σε έγγραφα online και offline. Προσφέρεται μαζί με το Office 2010 και παρέχει μια διεπαφή χρήστη παρόμοια με την Εξερεύνηση των Windows για προβολή και επεξεργασία αρχείων και λιστών από μια τοποθεσία του SharePoint. SharePoint Workspace ...

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Διατίθενται στη δημοσίευση του SharePoint 2010 - dummies

Το Site δημοσίευσης του sharePoint 2010 παρέχει μια πλούσια εμπειρία επεξεργασίας καθιστά εύκολο για ένα μη τεχνικό πρόσωπο να δημιουργήσει ιστοσελίδες. Η προσθήκη του περιεχομένου σας στη σελίδα είναι γρήγορη. Το SharePoint παρέχει πολλά είδη δοχείων περιεχομένου που μπορείτε να χρησιμοποιήσετε κατά τη δημιουργία της σελίδας σας, συμπεριλαμβανομένων των πλαισίων κειμένου μιας γραμμής για την εισαγωγή μιας απλής γραμμής κειμένου ...

Για ιστότοπους SharePoint Online - dummies

Για ιστότοπους SharePoint Online - dummies

Μπορείτε να δημιουργήσετε και να αναπτύξετε τρεις κύριους τύπους σελίδων του SharePoint όχι λιγότερο!) - το καθένα με ξεχωριστή λειτουργία: περιεχόμενο, τμήματα Web και εκδόσεις σελίδων. Σελίδα περιεχομένου: Επίσης γνωστή ως σελίδα wiki, αυτό είναι το μαχαίρι ελβετικού στρατού των σελίδων του SharePoint. Μια σελίδα περιεχομένου παρέχει όχι μόνο μια θέση ...

Η επιλογή των συντακτών

Τι είναι ένας χάρτης Java; - ανδρείκελα

Τι είναι ένας χάρτης Java; - ανδρείκελα

Πίνακες και εξειδικευμένες λίστες καθιστούν δυνατή την εκτέλεση μιας εκπληκτικής σειράς εργασιών με την Java. Ωστόσο, υπάρχουν περιπτώσεις όπου μια εφαρμογή Java χρειάζεται κάτι που είναι περισσότερο παρόμοιο με μια βάση δεδομένων, χωρίς να έχει όντως όλες τις αποσκευές της βάσης δεδομένων (όπως η αγορά μιας ξεχωριστής εφαρμογής). Για παράδειγμα, μπορεί να θέλετε να είστε σε θέση ...

Λίγα περίεργα πράγματα για το Java Math - dummies

Λίγα περίεργα πράγματα για το Java Math - dummies

- να έχουν ορισμένους περιορισμούς όταν πρόκειται για υπολογισμό μαθηματικών. Αυτοί οι περιορισμοί είναι συνήθως ασήμαντοι, αλλά μερικές φορές γλιστρίζουν και σας δαγκώνουν. Εδώ είναι τα πράγματα που πρέπει να προσέξετε όταν κάνετε μαθηματικά στην Java. Η

Η επιλογή των συντακτών

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Πώς να δουλεύεις με τη νέα γκάμα Blur στο Photoshop CS6 - ανδρείκελα

Από τα τρία νέα φίλτρα Blur στο Photoshop CS6, θα έχετε επίσης πρόσβαση σε δύο σχετικούς πίνακες ελέγχου, Εργαλεία θόλωσης και Εφέ θόλωσης, τα οποία περιέχουν τις επιλογές σας. Και τα τρία φίλτρα σας επιτρέπουν να δημιουργήσετε ειδικά εφέ. Blur πεδίου: Δημιουργεί μια συνολική θόλωση στην εικόνα σας. Με την προσθήκη πρόσθετων σημείων ελέγχου ή καρφίτσες, ...

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

Τρόπος εργασίας με τον πίνακα ιδιοτήτων στο Photoshop CS6 - ανδρείκελα

, αυτόνομο πλαίσιο Μάσκες στο Photoshop CS6 προς όφελος του πίνακα Ιδιότητες, ο οποίος περιλαμβάνει τώρα τις δυνατότητες των πλαισίων Μάσκες και Προσαρμογές. Δεν υπάρχουν όμως ανησυχίες. Κανένα από τα χαρακτηριστικά που παρείχε προηγουμένως ο πίνακας "Μάσκες" χάθηκε. Ο νέος πίνακας Ιδιότητες σάς δίνει τη δυνατότητα να προσθέσετε, να επεξεργαστείτε και να διαχειριστείτε το στρώμα σας, ...

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Πώς να εργάζεστε με το σημείο εξαφάνισης στο Photoshop CS6 - ανδρείκελα

Μπορείτε να κάνετε ρεαλιστικές τροποποιήσεις σε εικόνες που έχουν προοπτικά επίπεδα. Με το Σημείο Εκκίνησης, καθορίζετε τα επίπεδα στις εικόνες σας και, στη συνέχεια, χρησιμοποιώντας μια ποικιλία τεχνικών, προσθέστε ή εξαλείψτε αντικείμενα σε αυτά τα αεροπλάνα. Ανοίξτε μια εικόνα που χρειάζεται επεξεργασία. Εάν θέλετε να επικολλήσετε ...