Wat is [Ljava.lang.Object ;?

1. Overzicht

In deze tutorial leren we wat [Ljava.lang.Object middelen en hoe u toegang krijgt tot de juiste waarden van het object.

2. Java-objectklasse

Als we in Java een waarde rechtstreeks vanuit een object willen afdrukken, is het eerste dat we zouden kunnen proberen het aan te roepen toString methode:

Object [] arrayOfObjects = {"John", 2, true}; assertTrue (arrayOfObjects.toString (). startsWith ("[Ljava.lang.Object;"));

Als we de test uitvoeren, zal deze succesvol zijn, maar meestal is het geen erg nuttig resultaat.

Wat we willen doen, is de waarden binnen de array afdrukken. In plaats daarvan hebben we [Ljava.lang.Object. De naam van de klasse, zoals geïmplementeerd in Object. Klasse :

getClass (). getName () + '@' + Integer.toHexString (hashCode ())

Wanneer we de klassenaam rechtstreeks van het object krijgen, krijgen we de interne namen van de JVM met hun typen, daarom hebben we extra tekens zoals [ en L., vertegenwoordigen ze respectievelijk de typen Array en ClassName.

3. Betekenisvolle waarden afdrukken

Om het resultaat correct te kunnen afdrukken, kunnen we enkele klassen uit de java.util pakket.

3.1. Arrays

We kunnen bijvoorbeeld twee van de methoden in de Arrays klasse om met de conversie om te gaan.

Met eendimensionale arrays kunnen we de toString methode:

Object [] arrayOfObjects = {"John", 2, true}; assertEquals (Arrays.toString (arrayOfObjects), "[John, 2, true]");

Voor diepere arrays hebben we de deepToString methode:

Object [] innerArray = {"Wij", "Zijn", "Binnen"}; Object [] arrayOfObjects = {"John", 2, innerArray}; assertEquals (Arrays.deepToString (arrayOfObjects), "[John, 2, [We, Are, Inside]]");

3.2. Streamen

Een van de belangrijkste nieuwe functies in JDK 8 is de introductie van Java-streams, die klassen bevat voor het verwerken van reeksen elementen:

Object [] arrayOfObjects = {"John", 2, true}; Lijst listOfString = Stream.of (arrayOfObjects) .map (Object :: toString) .collect (Collectors.toList ()); assertEquals (listOfString.toString (), "[John, 2, true]");

Eerst hebben we een stream gemaakt met behulp van de helper-methode van. We hebben alle objecten in de array geconverteerd naar een string met kaart, dan hebben we het in een lijst ingevoegd met verzamelen om de waarden af ​​te drukken.

4. Conclusie

In deze zelfstudie hebben we gezien hoe we zinvolle informatie uit een array kunnen afdrukken en de standaard kunnen vermijden [Ljava.lang.Object ;.

We kunnen de broncode voor dit artikel altijd vinden op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found