Što je [Ljava.lang.Object ;?

1. Pregled

U ovom uputstvu naučit ćemo što [Ljava.lang.Object sredstva i kako pristupiti ispravnim vrijednostima predmeta.

2. Java klasa predmeta

U Javi, ako želimo ispisati vrijednost izravno s objekta, prvo što bismo mogli pokušati je nazvati je toString metoda:

Object [] arrayOfObjects = {"Ivan", 2, istina}; assertTrue (arrayOfObjects.toString (). startWith ("[Ljava.lang.Object;"));

Ako pokrenemo test, bit će uspješan, ali obično nije vrlo koristan rezultat.

Ono što želimo je ispisati vrijednosti unutar polja. Umjesto toga, imamo [Ljava.lang.Object. Naziv klase, kako je implementiran u Objekt.razred :

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

Kad naziv klase dobijemo izravno iz objekta, dobivamo interna imena iz JVM-a s njihovim vrstama, zato imamo dodatne znakove poput [ i Loni predstavljaju tipove Array i ClassName.

3. Ispis značajnih vrijednosti

Da bismo mogli ispravno ispisati rezultat, možemo koristiti neke klase iz java.util paket.

3.1. Nizovi

Na primjer, možemo koristiti dvije metode u Nizovi razred za rješavanje pretvorbe.

S jednodimenzionalnim nizovima možemo koristiti toString metoda:

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

Za dublje nizove imamo deepToString metoda:

Objekt [] innerArray = {"Mi", "Jesmo", "Unutra"}; Object [] arrayOfObjects = {"John", 2, innerArray}; assertEquals (Arrays.deepToString (arrayOfObjects), "[John, 2, [We, Are, Inside]]");

3.2. Strujanje

Jedna od značajnih novih značajki u JDK 8 je uvođenje Java streamova, koji sadrži klase za obradu sekvenci elemenata:

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

Prvo, stvorili smo tok pomoću pomoćne metode od. Sve smo objekte unutar polja pretvorili u niz pomoću karta, onda smo ga umetnuli na popis pomoću prikupiti za ispis vrijednosti.

4. Zaključak

U ovom uputstvu vidjeli smo kako možemo ispisati značajne informacije iz niza i izbjeći zadane [Ljava.lang.Object ;.

Izvorni kod za ovaj članak uvijek možemo pronaći na GitHubu.