Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Oliver Tušla:15.8.2017 12:00

Ahoj, mám tuto třídu

public class Main {

        public static void main(String[] args) {
                Integer a = new Integer(4);
                String b = "4";
                int c = 5;
                char d = 'p';
                Object[] paramsObject = {a, b, c, d};
                printEachObject(paramsObject);
        }

        public static void printEachObject(Object[] arguments) {
                for (Object obj : arguments) {
                        System.out.println(obj);
                }
        }

}

Jako argument u metody printEachObject je pole objektů. Zkoušel jsem si dát třeba pole stringů a opravdu to nefunguje, když jsem tam zkusil dát třeba pole čísel. :D Pak mi není jasné jak to, že když dám do pole objektů primitivní datový typ jako např. int, char.. tak to funguje.

Předem děkuji za vysvětlení. :)

 
Odpovědět
15.8.2017 12:00
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na Oliver Tušla
David Hartinger:15.8.2017 12:47

Ahoj, tomu co děláš se říká tzv. boxing. To je praktika, kdy primitivní typ obalíš do typu Object. Je to zmíněné v místním OOP kurzu Javy. Java je tak udělaná, aby šlo do Object uložit vše. Nicméně jakmile budeš potřebovat s daným prvkem pracovat, musíš jej přetypovat zpět, tedy vybalit. Aby to bylo jednodušší, poskytuje Java ještě typované objekty pro primitnívní typy, určitě jsi se setkal např. s třídou Integer. Ta je tam proto, aby šel udělat např. ArrayList čísel.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
Nahoru Odpovědět
15.8.2017 12:47
New kid back on the block with a R.I.P
Avatar
Atrament
Tvůrce
Avatar
Odpovídá na Oliver Tušla
Atrament:15.8.2017 12:48

Java provádí tzv. <a href='http://­docs.oracle.com/ja­vase/tutorial/ja­va/data/autobo­xing.html'>au­toboxing a unboxing</a> - jednoduše řečeno to znamená, že podle potřeby převádí primitivní datové typy na patřičné objekty a naopak. Takže pokud se pokusíš použít int jako objekt, tak bude převeden na Integer a naopak.

 
Nahoru Odpovědět
15.8.2017 12:48
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.