Sobes.tech
Junior

Kako biste pretvorili referentne tipove u primitivne i obrnuto?

sobes.tech АИ

Одговор од АИ

Za referentne tipove (npr. Integer, Double, Boolean) koristi se automatsko pakovanje (autoboxing) za primitivne tipove (int, double, boolean). JVM automatski konvertuje referentni tip u njegov ekvivalentni primitivni tip kada je to potrebno.

// Primitivni tip
int primitiveInt = 10;

// Kreiranje referentnog tipa od primitivnog (autoboxing)
Integer objectInt = primitiveInt; // Automatska konverzija iz int u Integer

// Konverzija referentnog tipa nazad u primitivni (auto-unboxing)
int newPrimitiveInt = objectInt; // Automatska konverzija iz Integer u int

Za primitivne tipove u referentne tipove (npr. int u Integer, double u Double, boolean u Boolean) koristi se autoboxing. JVM automatski kreira objekat referentnog tipa od primitivne vrednosti.

// Primitivni tip
double primitiveDouble = 3.14;

// Kreiranje referentnog tipa od primitivnog (autoboxing)
Double objectDouble = primitiveDouble; // Automatska konverzija double u Double

// Konverzija referentnog tipa nazad u primitivni (auto-unboxing)
double newPrimitiveDouble = objectDouble; // Automatska konverzija Double u double

Važno je zapamtiti da pri konverziji referentnog tipa u primitivni (auto-unboxing) može doći do NullPointerException ako referentni tip ima vrednost null.

Takođe, pre uvođenja autoboxing i auto-unboxing, koristile su se eksplicitne metode wrapper klasa, kao što su intValue(), doubleValue(), booleanValue(), za konverziju referentnih tipova u primitivne, i konstruktori ili statičke metode valueOf() za konverziju primitivnih u referentne tipove. Autoboxing i auto-unboxing su znatno pojednostavili ovaj proces.

// Eksplicitna konverzija pre autoboxing/autounboxing
Integer explicitInteger = new Integer(25); // Korišćenje konstruktora (zastarjelo)
int explicitInt = explicitInteger.intValue(); // Korišćenje metode intValue()

// Korišćenje statičke metode valueOf() (preferirano)
Integer valueOfInteger = Integer.valueOf(50);
int valueOfInt = valueOfInteger.intValue();