Junior
Kuidas te muudaksite viidetüüpe primitiivseteks ja vastupidi?
sobes.tech AI
Vastus AI-lt
Sõltuvate tüüpide (näiteks Integer, Double, Boolean) puhul kasutatakse automaatset unboxingut (unboxing) primitiivsetest (int, double, boolean) tüüpidesse. JVM automaatselt teisendab seotud tüübi selle primitiivseks ekvivalentiks vajadusel:
// Primitiivne tüüp
int primitiveInt = 10;
// Seotud tüübi loomine primitiivist (auto-boxing)
Integer objectInt = primitiveInt; // Automaatne `int`-ist `Integer`-ks teisendus
// Seotud tüübi teisendamine tagasi primitiivseks (auto-unboxing)
int newPrimitiveInt = objectInt; // Automaatne `Integer`-ist `int`-ks teisendus
Primitiivsetest tüüpidest seotud tüüpide (auto-boxing) loomine toimub JVM-i automaatselt, luues seotud tüübi objekti primitiivväärtusest:
// Primitiivne tüüp
double primitiveDouble = 3.14;
// Seotud tüübi loomine primitiivist (auto-boxing)
Double objectDouble = primitiveDouble; // Automaatne `double`-ist `Double`-ks teisendus
// Seotud tüübi teisendamine tagasi primitiivseks (auto-unboxing)
double newPrimitiveDouble = objectDouble; // Automaatne `Double`-ist `double`-ks teisendus
Oluline on meeles pidada, et seotud tüübi teisendamisel primitiivseks (unboxing) võib tekkida NullPointerException, kui seotud tüüp on null.
Seega, auto-ümbrise ja unboxing protsess on oluliselt lihtsustanud:
// Enne auto-ümbrise ja unboxing protsessi täpne teisendus
Integer explicitInteger = new Integer(25); // Vananenud konstruktor
int explicitInt = explicitInteger.intValue(); // `intValue()` meetodi kasutamine
// Kasutades staatilist meetodit `valueOf()` (soovitatav)
Integer valueOfInteger = Integer.valueOf(50);
int valueOfInt = valueOfInteger.intValue();