1 反射的作用
通过java语言中的反射机制可以操作字节码文件(可以读和修改字节码文件。)
通过反射机制可以操作代码片段。(class文件。)
2 反射机制相关的类
类 | 含义 |
---|---|
java.lang.Class | 代表一个类型,代表整个类。 |
java.lang.reflect.Method | 代表类中的方法。 |
java.lang.reflect.Constructor | 代表类中的构造方法。 |
java.lang.reflect.Field | 代表类中的成员变量(静态变量+实例变量)。 |
必须先获得Class才能获取Method、Constructor、Field。
java.lang.Class:
public class User{
// Field
int no;
// Constructor
public User(){
}
public User(int no){
this.no = no;
}
// Method
public void setNo(int no){
this.no = no;
}
public int getNo(){
return no;
}
}
获取Class的三方式
方式 | 备注 |
---|---|
Class.forName(“完整类名带包名”) | 静态方法 |
对象.getClass() | |
任何类型.class |
通过反射实例化对象
对象.newInstance()
注:newInstance()方法内部实际上调用了无参数构造方法,必须保证无参构造存在才可以。
否则会抛出java.lang.InstantiationException异常。