Š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.