ArrayList i rzutowanie

0

Witam,
mam takie pytanko odnośnie ArrayList - z dokumentacji wynika, że przechowuje obiekty klasy Object. Pobierając element listy za pomocą metody get(), dostajemy Object. To dlaczego:

 

        List list = new ArrayList();
        list.add("test");
        System.out.println(list.get(0));

wyświetla mi normalnie napis "test" zamiast np java.lang.Object@42e816 ??

0

Po pierwsze - nie uzywa sie tak list !
Po drugie - wywolywane jest niejawnie toString() a dla String'a toString() zwraca jego zawartosc.

List<Object> list = new ArrayList<Object>();
list.add("test");
System.out.println(list.get(0));
0

Ma w tym swój udział http://en.wikipedia.org/wiki/Dynamic_binding_(computer_science)

Mimo, że arraylist w tej postaci zwraca obiekty typu Object, wywoływane na nich metody (w tym przypadku toString()) i tak będą wywoływane dla rzeczywistego typu obiektu.

0

Dzięki za odpowiedzi. Właśnie zdałem sobie sprawę że moje pytanie było mega-lamerskie ;)

[losowa nazwa] napisał(a)

Po pierwsze - nie uzywa sie tak list !
Po drugie - wywolywane jest niejawnie toString() a dla String'a toString() zwraca jego zawartosc.

List<Object> list = new ArrayList<Object>();
list.add("test");
System.out.println(list.get(0));

Po co ten generyk (generic?) <Object> ?

0

Niejawnie wywoływane jest toString() wewnątrz metod println() i print().
System.out.println(dupa) jest równoważne z System.out.println(dupa.toString()).
Ale dla tak utworzonej listy

        List<Object> list = new ArrayList<Object>();
        list.add("test");

obiekt list.get(0) nie jest typu String, trzeba rzutować.

1 użytkowników online, w tym zalogowanych: 0, gości: 1