Sobes.tech
Junior

Hoe zou je referentietypen omzetten in primitieve typen en vice versa?

sobes.tech AI

Antwoord van AI

Voor referentietypen (bijvoorbeeld Integer, Double, Boolean) wordt auto-boxing gebruikt voor primitieve typen (int, double, boolean). De JVM converteert automatisch het referentietype naar het bijbehorende primitieve type wanneer dat nodig is.

// Primitief type
int primitiveInt = 10;

// Aanmaken van een referentietype uit een primitief (auto-boxing)
Integer objectInt = primitiveInt; // Automatische conversie van int naar Integer

// Omzetten van een referentietype terug naar een primitief (auto-unboxing)
int newPrimitiveInt = objectInt; // Automatische conversie van Integer naar int

Voor primitieve types naar referentietypes (bijvoorbeeld int naar Integer, double naar Double, boolean naar Boolean) wordt auto-boxing gebruikt. De JVM maakt automatisch een object van het referentietype van een primitieve waarde.

// Primitief type
double primitiveDouble = 3.14;

// Aanmaken van een referentietype uit een primitief (auto-boxing)
Double objectDouble = primitiveDouble; // Automatische conversie van double naar Double

// Omzetten van een referentietype terug naar een primitief (auto-unboxing)
double newPrimitiveDouble = objectDouble; // Automatische conversie van Double naar double

Het is belangrijk om te onthouden dat bij het omzetten van een referentietype naar een primitief (unboxing) een NullPointerException kan optreden als het referentietype de waarde null heeft.

Daarnaast werden vóór de introductie van auto-boxing en auto-unboxing expliciete methoden van wrapper-klassen gebruikt, zoals intValue(), doubleValue(), booleanValue(), om referentietypen naar primitieve types te converteren, en constructors of statische methoden valueOf() om primitieve types naar referentietypes te converteren. Auto-boxing en auto-unboxing hebben dit proces aanzienlijk vereenvoudigd.

// Expliciete conversie vóór auto-boxing/autounboxing
Integer explicitInteger = new Integer(25); // Gebruik van de constructor (verouderd)
int explicitInt = explicitInteger.intValue(); // Gebruik van de methode intValue()

// Gebruik van de statische methode valueOf() (voorkeur)
Integer valueOfInteger = Integer.valueOf(50);
int valueOfInt = valueOfInteger.intValue();