Junior
Τι είναι η μετατροπή τύπου (casting) στη Java;
sobes.tech AI
Απάντηση από AI
Η μετατροπή τύπων (casting) στη Java είναι η μετατροπή της τιμής ενός τύπου δεδομένων σε έναν άλλο τύπο δεδομένων.
Τύποι μετατροπής:
- Explicit Casting (Ραφινάτο): Πραγματοποιείται από τον προγραμματιστή χρησιμοποιώντας τον τελεστή
(τύπος). Χρησιμοποιείται για μετατροπή από "μεγαλύτερο" τύπο σε "μικρότερο" (π.χ., απόdoubleσεint). Μπορεί να οδηγήσει σε απώλεια δεδομένων.// αυτόματη μετατροπή (implicit) int a = 10; double b = a; // int σε double // ρητή μετατροπή (explicit) double c = 10.5; int d = (int) c; // double σε int, d θα είναι 10 - Implicit Casting (Αυτόματη Μετατροπή / Widening Conversion): Πραγματοποιείται αυτόματα από το JVM όταν μετατρέπουμε από "μικρότερο" σε "μεγαλύτερο" τύπο (π.χ., από
intσεdouble). Είναι ασφαλές και δεν προκαλεί απώλεια δεδομένων.int x = 10; double y = x; // int αυτόματα σε double
Η μετατροπή τύπων μπορεί να συμβεί μεταξύ primitive τύπων ή μεταξύ αντικειμενικών τύπων σε μια ιεραρχία κληρονομικότητας.
Για μετατροπή αντικειμενικών τύπων:
- Upcasting: Μετατροπή μιας υποκλάσης στη superκλάση της. Είναι έμμεση και ασφαλής.
class Animal {} class Dog extends Animal {} Animal animal = new Dog(); // Upcasting - Downcasting: Μετατροπή μιας superκλάσης σε υποκλάση. Απαιτεί ρητή μετατροπή και μπορεί να προκαλέσει
ClassCastExceptionκατά την εκτέλεση, αν το αντικείμενο δεν είναι πραγματικά μια περίπτωση της στόχευσης υποκλάσης.Animal animal = new Dog(); // Upcasting // Downcasting - απαιτεί ρητή μετατροπή και έλεγχο με instanceof if (animal instanceof Dog) { Dog dog = (Dog) animal; // Τώρα μπορεί να χρησιμοποιήσει μεθόδους που είναι συγκεκριμένες για το Dog }