搞懂Java的反射机制
1.什么是反射?
java的反射机制是指可以在运行状态下获取类和对象的所有属性和方法。
2.反射的作用?
1、在运行时获取一个类/对象的成员变量和方法
2、在运行时创建一个类的对象
3、在运行时判断一个对象是否属于一个类
3.反射有哪些具体的应用场景?
1、JDBC连接数据库时,使用Class.forName()通过反射加载数据库的驱动。
2、Spring的IOC (控制反转)
使用的就是工厂模式+反射的原理,需要使用到的类事先在配置文件中先声明,需要时根据配置的类名动态生成对象。
4.反射的缺点?
反射代码的执行速度慢,性能差,如果有其他方案可以替代,建议不使用。
5.如何获取类对象?
1、Class.forName(“xxx”)
try {clazz = Class.forName("com.reflection.User");
} catch (ClassNotFoundException e) {e.printStackTrace();
}
2、通过对象的getClass()方法
Class clazz = user.getClass();
3、直接通过类名获取类对象
Class clazz = User.class;
6.如何通过反射创建对象?
1、调用无参构造器
try {clazz = Class.forName("com.reflection.User");
} catch (ClassNotFoundException e) {e.printStackTrace();
}
Object obj = clazz.newInstance();
2、调用有参构造器
try {clazz = Class.forName("com.reflection.User");
} catch (ClassNotFoundException e) {e.printStackTrace();
}
Constroctor constroctor = clazz.getConstructor(String.class,Integer.class);
Object obj = constroctor.newInstance("龙哥", 29);