Java核心知识(一):反射

91 阅读1分钟

1. 概念

反射是Java提供的一种在程序运行时分析类和对象的能力,允许程序在运行时动态获取类的信息(类名、属性、方法等),并动态操作类的对象,包括但不限于获取类信息、实例化对象、调用方法、获取构造器方法等。

2. 反射API

  1. Class类:反射核心类,可以获取类的属性、方法等
  2. Field类:Java.lang.reflec包中的类,表示类的成员变量,可以获取和设置类的属性值
  3. Method类:Java.lang.reflec包中的类,表示类的方法,可以获取类的方法信息或调用方法
  4. Constructor类:Java.lang.reflec包中的类,表示类的构造方法,可以用于实例化对象

3. 使用方法

获取类的Class对象,通过Class对象访问属性、方法、构造方法

3.1 获取Class对象的3种方法

// 1.使用Class类的forName静态方法
Class clazz = Class.forName("com.flash7k.Person");

// 2.使用对象的getClass方法
Person person = new Person();
Class clazz = person.getClass();

// 3.使用类的class属性
Class clazz = Person.class;

3.2 创建对象的2种方法

// 获取Class对象
Class clazz = Class.forName("com.flash7k.Person");
// 使用newInstane方法创建对象
Person person1 = (Person) clazz.newInstance();
// 使用构造方法创建对象
Constructor constructor = clazz.getDeclaredConstructor(String.class, int.class);
Person person2 = constructor.newInstance("李四",18);