2013-04-29 15 views
6

znalazłem kilka dni temu kod w Javie, który używa klasy słowo kluczowe w kontekście, na przykład:Java klasa kluczowe

MyConcreteClass.class.AMethod(); 

Próbowałem zrobić to w JFrame, na przykład :

JFrame.class.getName(); 

To działa, ale ... Nie mogę dowiedzieć się/znaleźć w Internecie, co to słowo kluczowe oznacza w tym kontekście. Używałem go tylko do deklarowania klas.

Czy ktoś może mi wyjaśnić, co oznacza klasa w tym kontekście?

Dzięki

Odpowiedz

6

W tym kontekście class nie jest słowem kluczowym, jest to specjalny atrybut ("klasa literalna") klasy oznaczający odpowiadającą jej instancję Class. Na przykład, aby uzyskać obiekt Class z String, robimy to: String.class. Zwrócona wartość jest instancją klasy Class, która reprezentuje klasę String (zwróć uwagę na użycie wielkich i małych liter).

Tutaj klasa .class jest używana w rzeczywistej klasie, w celu uzyskania tego samego wyniku za pomocą jednej z jego instancji stosujemy metodę getclass(). Kontynuując nasz przykład, ten fragment kodu zwraca to samo wystąpienie, co Class, co odpowiada String: "".getClass().

Aby zaokrąglić pomysł - ten fragment zawsze zwróci true, dla każdej klasy z odpowiednim przykład chcesz testu:

"".getClass().equals(String.class) 
2

W tym kontekście class jest częścią class literal odnoszące się do przedmiotu Class reprezentujących tę klasę.

1

Posługując się słowem kluczowymw twoim przykładzie dostaniesz instancję obiektu typu Class<JFrame>.

1

Kiedy robisz JFrame.class otrzymujesz instancji Class<JFrame>, więc można wywołać metodę getName.

Literał klasy umożliwia dostęp do informacji o klasie, o której mowa.