
„Здрасти, Амиго!“
„Сега е време за основното събитие. Ще се запознаем с класа Class и ще се докоснем до Reflection.
Както вероятно вече сте разбрали, всичко в Java е обект. И от Howво се нуждае един обект? Какво има всеки обект, което дефинира за Howво става дума?"
"Клас!"
"Точно! Браво. Всеки обект има клас. Но да се върнем на обектите... Някои обекти изцяло съдържат обект, докато други просто помагат за управлението му."
"Този последен тип включва FileOutputStream и Thread . Когато създавате обект Thread , не се създава нова нишка. Нишката се създава от виртуалната машина на Java след извикването на метода start(). Този обект просто помага за управлението на процеса."
„Същото с FileOutputStream : файлът се съхранява на диска и операционната система управлява съхранението и достъпа. Но ние можем да взаимодействаме с него чрез File обекти, отново с помощта на виртуалната машина на Java.“
— Да, това вече го разбирам.
„И така, има специален клас, наречен Class за взаимодействие с класове.“
— Не беше трудно да отгатна.
"Да. Всеки път, когато виртуалната машина на Java зарежда нов клас в паметта, тя създава обект Class, който можете да използвате, за да получите конкретна информация за заредения клас."
"Всеки клас и обект е свързан с « Обект на клас »."
Пример | Описание |
---|---|
|
Получава обекта Class на класа Integer. |
|
Получава обекта Class на int класа. |
|
Получава обекта Class на String обект. |
|
Получава обекта Class на обекта Object. |
"Уау! Колко интересно!"
„Спомняте ли си, че думата клас е ключова дума в Java и не може да се използва като име на променлива?“
"О, да, знам, знам. Просто забравих."
„Използвали ли сте вече обекта Class някъде?“
„Да, използвахме го, когато написахме нашата собствена реализация на метода equals.“
„Да, можете да използвате метода getClass(), за да проверите дали обектите имат един и същи клас.“
— И Howво можеш да направиш с този предмет?
"Ами, много неща:"
Java code | Описание |
---|---|
|
Получава името на класа. |
|
Получава клас по име. |
|
Сравнява класовете на обекти. |
„Интересно, но не толкова готино, колкото си мислех.“
„Искате ли да е готино? Има и Reflection . Reflection е супер готино.“
„Какво е отражение ?“
" Отражението е способността на класа да получава информация за себе си. Java има специални класове: Field и Method , които са подобни на класа Class за класове. Точно Howто Class обектите ви позволяват да получите информация за клас, Field обектите предоставят информация за поле , а обектът Method предоставя информация за метод. И вижте Howво можете да правите с тях:"
Java code | Описание |
---|---|
|
Получава списък с обекти Class за интерфейсите на класа List |
|
Получава обекта Class на родителския клас на класа String |
|
Получава списък с методите на класа List |
|
Създава нов низ |
|
Получава метода за дължина на класа String и го извиква на String s |
„Уау! Това е наистина страхотно!“
GO TO FULL VERSION