Υπάρχει τρόπος να μετατραπεί το java.lang.Double
σε java.lang.Integer
;
Πετάει μια εξαίρεση
"java.lang.ClassCastException: java.lang.Double incompatible with java.lang.Integer",
Θα πρέπει να λάβετε ρητά την τιμή int χρησιμοποιώντας τη μέθοδο intValue() όπως αυτή:
Double d = 5.25;
Integer i = d.intValue(); // i becomes 5
Ή
double d = 5.25;
int i = (int) d;
Ένα Double
δεν είναι ένας Integer
, οπότε το cast δεν θα λειτουργήσει. Σημειώστε τη διαφορά μεταξύ της κλάσης Double
και της πρωτογενούς** του double
. Σημειώστε επίσης ότι ένα Double
είναι ένας Αριθμός
, άρα έχει τη μέθοδο intValue
, την οποία μπορείτε να χρησιμοποιήσετε για να πάρετε την τιμή ως ένα πρωτόγονο int
.
Οι κλάσεις Double και Integer είναι κλάσεις περιτύλιξης για τα πρωτότυπα της Java για τις κλάσεις double και int αντίστοιχα. Μπορείτε να κάνετε cast μεταξύ αυτών, αλλά θα χάσετε το floating point. Δηλαδή, το 5.4 που θα μετατραπεί σε int θα είναι 5. Εάν το εκχωρήσετε πίσω, θα είναι 5.0.