Αναπροσαρμογή: Οι ατέλειες έχουν λυθεί στην πιό πρόσφατη απελευθέρωση 1.5

Θέλησα να δημιουργήσω μια απλή ανώτατη λειτουργία, κάτι που θέλησα να κάνω για αρκετά κάποτε, το οποίο παίρνει έναν μεταβλητό αριθμό αριθμού & συγκρίσιμων επιχειρημάτων, essetially ακέραιου αριθμού, του διπλού κ.λπ., και επιστροφών ο ανώτατος του ίδιου τύπου. Επίσης θα επιθυμούσα να χρησιμοποιήσω τον αυτόματος-εγκιβωτισμό για να επιτρέψω σε με για να περάσω το INT & τα επιπλέοντα σώματα. Με generics, varargs, αυτόματος-εγκιβωτισμός διαθέσιμος, σκέφτηκα ότι ήμουν όλο το σύνολο έως ότου προσπάθησα. Συνειδητοποίησα ότι το όνειρο είναι εκεί αλλά JDK 1.5 είναι ακόμα μακριά από την πραγματοποίηση του οράματος.

Ο κώδικας παρουσιάζει μια εφαρμογή που πρέπει, αλλά δεν συντάσσει με jdk1.5.

Για να συντάξει τη χρήση javac - πηγή 1.5 MathUtil.java

Παρουσιάζει επίσης σχολιασμένη εφαρμογή (κάτω από την έκδοση) που συντάσσει. Εντούτοις δεν επιτρέπει σε με για να πραγματοποιήσει τα οφέλη των varargs σε αυτήν την περίπτωση.

Επίσης σημειώστε ότι τα μηνύματα λαθών είναι διφορούμενα (τι μια διφορούμενη ορθογραφία!). Παραδείγματος χάριν τα πρώτα λάθη λένε: γενική δημιουργία σειράς
Βέβαιος μπορώ να δημιουργήσω μια γενική σειρά εάν χρησιμοποιώ: Τ [] args, όπως φαίνεται στο σχολιασμένο κώδικα.
Τα άλλα δύο μηνύματα λαθών είναι διφορούμενα επίσης.

Εδώ είναι ο κώδικας δειγμάτων με τα σχόλια:

/** Αυτή η κατηγορία καταδεικνύει λίγους περιορισμούς στην εφαρμογή jdk. Ο στόχος είναι
 *  για να εφαρμόσει μια γενική ανώτατη λειτουργία που παίρνει οποιοσδήποτε αριθμός αριθμού εκτιμεί και επιστρέφει
 *  το μέγιστο. Επιτρέπει τα μεταβλητά επιχειρήματα έτσι μπορείτε να πείτε ανώτατο (1, 2, 3). Υποστηρίζει
 *  autoboxing έτσι μπορείτε να χρησιμοποιήσετε 1 αντί Integer.valueOf (1). Και επιστρέφει
 *  το στοιχείο του ίδιου τύπου όπως περνά παράμετρος, έτσι ρίψη τύπων δεν απαιτείται,
 *  χρησιμοποίηση generics της ικανότητας.
 *
 *  Αυτή η κατηγορία δεν συντάσσει. Τα λάθη παρουσιάζονται κατωτέρω.
 *
 *  
 *  MathUtil.java: 16: γενική δημιουργία σειράς
 *  δημόσιο στατικό  Τ ανώτατο (Τ… args) {
 *                                                   ^
 *  MathUtil.java: 34:  ανώτατος (Τ []) σε MathUtil δεν μπορεί να εφαρμοστεί (INT, INT, INT, INT)
 *   καμία περίπτωση τύπου μεταβλητό Τ δεν υπάρχει έτσι ώστε ο τύπος INT επιχειρήματος προσαρμόζεται
 *  στον επίσημο τύπο Τ παραμέτρου []
 *          βεβαιώστε ανώτατο (10, 2, 3, 5) .compareTo (10) == 0 
 *                 ^
 *  MathUtil.java: 35:  ανώτατος (Τ []) σε MathUtil δεν μπορεί να εφαρμοστεί (το διπλάσιο, να διπλασιαστεί,
 *  uble, διπλός)  καμία περίπτωση τύπου μεταβλητό Τ δεν υπάρχει έτσι ώστε τύπος δ επιχειρήματος
 *  ouble προσαρμόζεται στον επίσημο τύπο Τ παραμέτρου []
 *          βεβαιώστε ανώτατο (10.0, 2.0, 3.2, 5.0) .compareTo (10.0) == 0 
 *                 ^
 *  3 λάθη
 *  
* δημόσια κατηγορία MathUtil { /* αυτή η εναλλακτική λύση κάτω από τις εργασίες εφαρμογής δημόσιο στατικό Τ ανώτατο (Τ args []) { βεβαιώστε args.length > 1 Τ ανώτατο = args [0] για (Τ arg: args) { εάν (max.compareTo (arg) < 0=""> Τ ανώτατο (Τ… args) { βεβαιώστε args.length > 1 Τ ανώτατο = args [0] για (Τ arg: args) { εάν (max.compareTo (arg) < 0="">

Δείτε περισσότερων στα ζωύφια σε jdk1.5 στην επόμενη θέση μου.