ArrayList i rzutowanie

ArrayList i rzutowanie
madierfakier
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 13 lat
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:

Kopiuj
 

        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 ??

edytowany 1x, ostatnio: madierfakier
LN
  • Rejestracja:około 16 lat
  • Ostatnio:około rok
  • Postów:1398
0

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

Kopiuj
List<Object> list = new ArrayList<Object>();
list.add("test");
System.out.println(list.get(0));
edytowany 1x, ostatnio: [losowa nazwa]
VG
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 8 lat
  • Postów:79
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.


madierfakier
  • Rejestracja:około 15 lat
  • Ostatnio:ponad 13 lat
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.

Kopiuj
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

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

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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.