1. 什么是反射
反射,java语言中的一种机制,通过这种机制可以动态的实例化对象、读写属性、调用方法
2. 类类
所有狗 狗类 Dog 狗对象 旺财
所有猫 猫类 Cat 猫对象 肥波
所有类 类类 java.lang.Class 类对象 特定类
狗类的实例是旺财,猫类的实例是肥波,类类的实例就是类。
狗类是类类的一个实例,猫类也是类类的一个实例,学生类也是类类的一个实例.........
狗类是描述所有的狗,猫类是描述所有的猫,类类就是描述所有的类
3. 一切反射相关的代码都从获得类对象开始
类对象:类对象就是类类的一个类的实例
类对象也称为类的实例
3.1 Class.forName(完整类名)
3.2 类名.class
3.3 对象.getClass()
注1:ClassNotFoundException(类名错|少jar包)
注2:同一类的、类对象只会创建一个
这是一个Student的测试类:
package com.lq.reflect;
public class Student {
private String sid;
private String sname;
public Integer age;
static{
System.out.println("加载进jvm中!");
}
public Student() {
super();
System.out.println("调用无参构造方法创建了一个学生对象");
}
public Student(String sid) {
super();
this.sid = sid;
System.out.println("调用带一个参数的构造方法创建了一个学生对象");
}
public Student(String sid, String sname) {
super();
this.sid = sid;
this.sname = sname;
System.out.println("调用带二个参数的构造方法创建了一个学生对象");
}
@SuppressWarnings("unused")
private Student(Integer age) {
System.out.println("调用Student类私有的构造方法创建一个学生对象");
this.age = age;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public void hello() {
System.out.println("你好!我是&#