反射机制是面试官常问问题,这里做个总结
含义:
什么是反射机制?
java反射机制是在运行状态中,对于任何一个类 ,都能知道这个类的所有属性和方法;对于任何一个对象,也都能调用他的任意一个方法和属性;这种动态获取信息以及动态调用对象的功能成为java的反射机制;
java获取反射机制三种方式
这里通过代码举例通俗易懂:
建立学生类:
public Class Student(){
private Integer id;
private String name;
}
方法1:
通过new对象实现反射机制
public class Get{
public static void main() throws ClassNotFoundException{
Student stu=new Student(); //创建对象
Class class1=stu.getClass();
System.out.prinln(class1.getName());
}
}
方式2:
通过路径实现反射机制
public class Get{
public static void main throws ClassNotFoundException(){
Class class2=Class.forName("xxx.Student"); //xxx.Studetn表示类的路径
System.out.println(class2.getName());
}
}
方式3:
通过类名实现反射机制
public class Get{
public static void main(String[] args) throws ClassNotFoundException {
Class class3 = Student.class;
System.out.println(class3.getName());
}
}
反射机制的优缺点
优点
动态加载类,提高代码灵活度
缺点
运行时确定类型,绑定对象;
应用场景
- 框架设计
- Mybatis使用jdbc连接数据库时,使用Class.forName()通过反射加载数据库驱动程序;
- Spring框架的IOC(动态加载管理Bean)和AOP(动态代理)都用到了反射机制