Čo je [Ljava.lang.Object ;?

1. Prehľad

V tejto príručke sa dozvieme, čo [Ljava.lang.Object prostriedky a spôsob prístupu k správnym hodnotám objektu.

2. Trieda objektov Java

Ak chceme v Jave tlačiť hodnotu priamo z objektu, prvou vecou, ​​ktorú by sme mohli vyskúšať, je zavolať jeho natiahnuť metóda:

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

Ak test vykonáme, bude úspešný, ale zvyčajne to nie je veľmi užitočný výsledok.

Čo chceme urobiť, je vytlačiť hodnoty do poľa. Namiesto toho máme [Ljava.lang.Object. Názov triedy, ako je implementovaný v Object.class :

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

Keď dostaneme názov triedy priamo z objektu, dostaneme interné názvy z JVM s ich typmi, preto máme ďalšie znaky ako [ a Ľ, predstavujú typy Array a ClassName.

3. Tlač zmysluplných hodnôt

Aby sme mohli výsledok správne vytlačiť, môžeme použiť niektoré triedy z java.util balíček.

3.1. Polia

Napríklad môžeme použiť dve z metód v Polia triedy zaoberať sa konverziou.

Pri jednorozmerných poliach môžeme použiť natiahnuť metóda:

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

Pre hlbšie polia máme deepToString metóda:

Object [] innerArray = {"My", "Sme", "Vo vnútri"}; Object [] arrayOfObjects = {"John", 2, innerArray}; assertEquals (Arrays.deepToString (arrayOfObjects), "[John, 2, [We, Are, Inside]]");

3.2. Streaming

Jednou z významných nových funkcií JDK 8 je zavedenie tokov Java, ktorá obsahuje triedy na spracovanie sekvencií prvkov:

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

Najskôr sme vytvorili prúd pomocou pomocnej metódy z. Všetky objekty vo vnútri poľa sme previedli na reťazec pomocou mapa, potom sme ho vložili do zoznamu pomocou zbierať hodnoty vytlačiť.

4. Záver

V tomto návode sme videli, ako môžeme tlačiť zmysluplné informácie z poľa a vyhnúť sa predvoleným nastaveniam [Ljava.lang.Object ;.

Zdrojový kód tohto článku môžeme kedykoľvek nájsť na stránkach GitHub.


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