Java 基础 - 反射
1 什么是类对象
类的对象:基于某个类 new 出来的对象,也称为实例对象。
类对象:类加载的产物,封装了一个类的所有信息(类名、父类、接口、属性、方法、构造方法、包) ,每个类只有一个类对象。
反射:把Java类中的各种成分映射成单独的Java对象进行操作。
如图:
2 获取类对象的方法
通过类的对象,获取类对象。
Student s = new Student();
Class c = s.getClass();
通过类名获取类对象。
Class c = 类名.class;
通过静态方法获取类对象。
Class c=Class.forName(“包名.类名”);
代码演示:
Student:
package StageOne.day24.demo1;
import java.io.Serializable;
/**
* @author 胡昊龙
* @version 1.0
* @description: TODO
* @date 2024/1/19 10:13
*/
public class Student implements Serializable{
private String name;
private int age;
public Student() {
}
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
//普通方法
public void show() {
System.out.println("学生信息: 姓名 "+this.name+" 年龄 "+this.age);
}
public void show(String address) {
System.out.println("学生地址: "+address);
}
public String getInfo() {
return this.name+"..."+this.age;
}
public static void method1() {
System.out.println("静态方法");
}
private void method2() {
System.out.println("私有方法");
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
TestReflect:
package StageOne.day24.demo1;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
/**
* @author 胡昊龙
* @version 1.0
* @description: TODO
* @date 2024/1/19 10:20
*/
public class TestReflect {
public static void main(String[] args) throws Exception{
reflect1();
}
//反射操作1: 获取类对象
public static void reflect1() throws Exception {
//方式1 通过类的实例获取
Student student = new Student();