Junior
Czym jest rzutowanie (casting) w Java?
sobes.tech AI
Odpowiedź od AI
Rzutowanie typów (casting) w Javie to konwersja wartości jednego typu danych na inny typ danych.
Rodzaje rzutowania:
- Jawne (Explicit Casting): Wykonywane przez programistę za pomocą operatora
(typ). Używane do konwersji z "większego" typu na "mniejszy" (np. zdoublenaint). Może prowadzić do utraty danych.// rzutowanie automatyczne (implicit) int a = 10; double b = a; // int na double // rzutowanie jawne (explicit) double c = 10.5; int d = (int) c; // double na int, d będzie równe 10 - Rzutowanie implicit (Implicit Casting / Widening Conversion): Wykonywane automatycznie przez JVM, gdy konwertujemy z "mniejszego" typu na "większy" (np. z
intnadouble). Jest bezpieczne i nie powoduje utraty danych.int x = 10; double y = x; // int automatycznie konwertowane na double
Rzutowanie typów może zachodzić między typami prymitywnymi lub między typami obiektów w hierarchii dziedziczenia.
Przy rzutowaniu obiektów:
- Upcasting: Konwersja podklasy do jej nadklasy. Jest to implicitne i bezpieczne.
class Animal {} class Dog extends Animal {} Animal animal = new Dog(); // Upcasting - Downcasting: Konwersja nadklasy do jej podklasy. Wymaga jawnego rzutowania i może wywołać
ClassCastExceptionpodczas działania, jeśli obiekt nie jest faktycznie instancją docelowej podklasy.Animal animal = new Dog(); // Upcasting // Downcasting - wymaga jawnego rzutowania i sprawdzenia instanceof if (animal instanceof Dog) { Dog dog = (Dog) animal; // Teraz można używać metod specyficznych dla Dog }