Hva er [Ljava.lang.Object ;?

1. Oversikt

I denne opplæringen lærer vi hva [Ljava.lang.Objekt midler og hvordan du får tilgang til de riktige verdiene til objektet.

2. Java-objektklasse

I Java, hvis vi vil skrive ut en verdi direkte fra et objekt, er det første vi kan prøve å kalle den toString metode:

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

Hvis vi kjører testen, vil den være vellykket, men vanligvis er det ikke et veldig nyttig resultat.

Det vi ønsker å gjøre er å skrive ut verdiene i matrisen. I stedet har vi det [Ljava.lang.Objekt. Navnet på klassen, som implementert i Objekt.klasse :

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

Når vi får klassenavnet direkte fra objektet, får vi de interne navnene fra JVM med deres typer, det er derfor vi har ekstra tegn som [ og L, representerer de henholdsvis Array og ClassName-typene.

3. Skrive ut meningsfulle verdier

For å kunne skrive ut resultatet riktig, kan vi bruke noen klasser fra java.util pakke.

3.1. Arrays

For eksempel kan vi bruke to av metodene i Arrays klasse for å takle konverteringen.

Med endimensjonale matriser kan vi bruke toString metode:

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

For dypere matriser har vi deepToString metode:

Objekt [] innerArray = {"Vi", "Er", "Innvendig"}; Objekt [] arrayOfObjects = {"John", 2, innerArray}; assertEquals (Arrays.deepToString (arrayOfObjects), "[John, 2, [We, Are, Inside]]");

3.2. Streaming

En av de viktigste nye funksjonene i JDK 8 er introduksjonen av Java-strømmer, som inneholder klasser for behandling av sekvenser av elementer:

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

Først har vi opprettet en strøm ved hjelp av hjelpemetoden av. Vi har konvertert alle objektene i matrisen til en streng ved hjelp av kart, så har vi satt den inn i en liste ved hjelp av samle inn for å skrive ut verdiene.

4. Konklusjon

I denne opplæringen har vi sett hvordan vi kan skrive ut meningsfull informasjon fra en matrise og unngå standard [Ljava.lang.Object ;.

Vi kan alltid finne kildekoden for denne artikkelen på GitHub.


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