Czym jest NazwaKlasy.class ?

Czym jest NazwaKlasy.class ?
0

Cześć,
może ktoś wytłumaczyć czym jest NazwaKlasy.class ?
To jest obiekt? Czy jeszcze coś innego ?

xfin
  • Rejestracja:ponad 11 lat
  • Ostatnio:9 miesięcy
  • Lokalizacja:Genewa
  • Postów:597
0

.Class to jest obiekt reprezentujący klasę w czasie działania programu. Plus jak wywołujesz ''NazwaKlasy.getClass()" to właśnie on jest zwrócony.

Koziołek
Moderator
  • Rejestracja:prawie 18 lat
  • Ostatnio:15 dni
  • Lokalizacja:Stacktrace
  • Postów:6821
2

NazwaKlasy.class to literał (element składni języka), który wskazuje na obiekt typu Class<NazwaKlasy>. Różni się tym od nazwaKlasy.getClass(), że można go użyć z typem prymitywnym np. int.class będzie poprawne (przy czym zwróci Class<Integer>).


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
edytowany 1x, ostatnio: Koziołek
Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 9 godzin
1

.class to taka statyczna wersja .getClass().

.class wymaga podania namiaru na konkretną klasę, ale nie musimy mieć instancji tej klasy.

.getClass() musi być wywołana na konkretnym obiekcie, ale nie musimy wiedzieć jakiej klasy jest ten obiekt przed wywołaniem .getClass() - w zasadzie to ta metoda jest właśnie po to, by dowiedzieć się z jakiej klasy obiektem mamy do czynienia.

Jak wspomniał Koziołek, int jest typem prymitywnym, a więc nie da się stworzyć obiektu jego typu i wywołać na nim .getClass(). Zostaje nam więc tylko i wyłącznie int.class.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit

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.