1、java反射创建对象的效率高,还是new创建对象效率高?
new创建对象的效率高,通过反射时,先通过class获取类资源,在使用类加载器创建,过程比较繁琐,效率低。
2、java反射的作用?
java反射是在运行时,对于任意一个类,都能够知道这个类全部的属性或方法;对于任意一个对象,都能够动态的调用他的方法。在java中,只有给定一个类的全类名,就能够通过反射机制获取这个类全部的信息。
3、java中应用反射的例子?
jdbc
4、反射的实现方法?
1、class.forName()
2、类名.class
3、对象名的getClass()
4、对于基本类型的包装类,可以调用其Type属性
5、java反射机制中可能用到的类?
class、 ,Method、 Field 、 Contructor
6、反射机制的优缺点?
优点:
1、能够在运行时动态获取类的实例,提高灵活度
2、能够与动态编译结合
缺点:
1、性能较低
2、安全性相对较低,破坏了类的封装性。
7、反射的缺点中有一点是性能较低,如何改进?
1、通过setAccessible(true) 来关闭jdk的安全检查机制来提高速度
2、多次创建一个类的实例时,使用缓存
3、使用reflectASM工具类,通过字节码生成的方法提高反射的速度
8、利用反射动态创建对象实例的方法。?
1、获取类的class对象,调用class对象的newInstance方法
2、获取类的class对象,在获取类的指定constructor对象,最后调用constructor的newInstance方法
//获取 Person 类的 Class 对象
Class clazz=Class.forName("reflection.Person");
//使用.newInstane 方法创建对象
Person p=(Person) clazz.newInstance();
//获取构造方法并创建对象 Constructor c=clazz.getDeclaredConstructor(String.class,String.class,int.class);
//创建对象并设置属性
Person p1=(Person) c.newInstance("李四","男",20);