1. Что такое технология отражения JAVA?
Java-отражениеМеханизм заключается в том, что в рабочем состоянии для любого класса можно знать все свойства и методы этого класса, для любого объекта можно вызывать любые его методы и свойства, это своего рода динамически получаемая информация и динамический вызов Функция метода называется механизмом отражения языка Java.
2. Где рефлексию вообще удобно использовать?
Иногда мы использовали некоторые знания, но не знали, что это за технический термин Когда мы только изучали jdbc, мы использовали строку кода,
Class.forName("com.mysql.jdbc.Driver.class").newInstance(); но тогда только знал, что строка кода была сгенерирована
Экземпляр объекта привода, не знаю его конкретного значения. Прослушав урок по механизму отражения, я понял, что это и есть отражение, и теперь многие открывают
Фреймворки используют механизм отражения, hibernate, struts реализованы с механизмом отражения.
3. API отражения Java
API отражения используется для генерации информации о классах, интерфейсах или объектах в JVM.
–Сорт: основной класс отражения, который может получать такую информацию, как атрибуты класса, методы и т. д.
–Класс поля: класс в пакете Java.lang.reflec, представляющий переменную-член класса, которую можно использовать для получения и установки значения атрибута в классе.
–Класс метода: класс в пакете Java.lang.reflec, представляющий метод класса, который можно использовать для получения информации о методе или выполнения методов в классе.
–Класс конструктора: класс в пакете Java.lang.reflec, представляющий конструктор класса.
В-четвертых, использование шагов отражения
- Получите объект класса класса, с которым вы хотите работать
- Вызов метода в классе Class
- Используйте API отражения для управления этой информацией.
5. Пример кода
package org.java.base.reflection;
public class Person {
private String name;
private String gender;
private int age;
public Person() {
}
public Person(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
//getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "姓名:"+name+" 性别:"+gender+" 年龄:"+age;
}
}
package org.java.base.reflection;
public class Person {
private String name;
private String gender;
private int age;
public Person() {
}
public Person(String name, String gender, int age) {
this.name = name;
this.gender = gender;
this.age = age;
}
//getter和setter方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString(){
return "姓名:"+name+" 性别:"+gender+" 年龄:"+age;
}
}
выходной результат
Метод: public java.lang.String org.java.base.reflection.Person.toString()
Метод: public java.lang.String org.java.base.reflection.Person.getName()
Метод: public void org.java.base.reflection.Person.setName(java.lang.String)
Метод: public void org.java.base.reflection.Person.setGender(java.lang.String)
Метод: public int org.java.base.reflection.Person.getAge()
Метод: public void org.java.base.reflection.Person.setAge(int)
Метод: public java.lang.String org.java.base.reflection.Person.getGender()
свойство: частный java.lang.String org.java.base.reflection.Person.name
свойство: частный java.lang.String org.java.base.reflection.Person.gender
свойство: частный интервал org.java.base.reflection.Person.age
Конструктор: public org.java.base.reflection.Person()
Конструктор: public org.java.base.reflection.Person(java.lang.String,java.lang.String,int)