反射的基本知识:
Java反射是指在运行时动态地获取类的信息并操作类的成员(属性、方法、构造函数等)。通过反射,我们可以在运行时获取类的名称、父类、接口、方法、字段等信息,并且可以通过反射来创建对象、调用方法、访问和修改字段的值,甚至可以在运行时动态地修改类的结构。
Java反射提供了以下几个核心的类和接口:
- Class类:代表一个类或接口,在运行时可以获取类的各种信息。
- Field类:代表类的成员变量,通过Field对象可以获取和修改成员变量的值。
- Method类:代表类的方法,通过Method对象可以调用方法。
- Constructor类:代表类的构造函数,通过Constructor对象可以创建对象。
- Modifier类:提供了一组静态方法,用于获取和操作成员变量和方法的修饰符。
Class类对象的三种实例化模式
方式 | 备注 |
---|---|
Class.forName(“完整类名带包名”) | 静态方法 |
对象.getClass() | |
任何类型.Class |
- 第一种方式:getClass()
public final native Class<?> getClass()
调用getclass方法
```java
import java.util.Date;
public class test {
public static void main(String[] args) {
Date date=new Date();
System.out.println(date.getClass());
}
}
2. 类.Class
import java.util.Date;
public class test {
public static void main(String[] args) throws Exception{
System.out.println(Date.class);
}
}
3.使用Class类提供的方法:
public static Class forName(String className) throws
ClassNotFoundException
范例:使用Class.forName()方法
package 反射;
import java.lang.Class;
public class test {
public static void main(String[] args) throws Exception{
Class<?> date =Class.forName("java.util.Date");
System.out.println(date);
}
}