反射
-
是一种底层技术,通常用于底层框架的编写
类对象-Class
-
类的对象:是类实例化的产物,可以存在多个
-
类对象:包含着类的所有信息,如属性、方法、构造、父类信息、接口信息等,是类加载的产物,通常只有一个
获取
-
类名.class
Class<Student> c1 = Student.class;
-
引用名.getClass()
Student stu = new Student(); Class c2 = stu.getClass();
-
Class.forName("全限定名")
Class c3 = Class.forName("com.bz.entity.Student");
常用方法
-
newInstance():利用无参构造构建类的实例对象
-
Constructor<?> getDeclaredConstructor(形参的类对象):获取指定形参列表的有参构造器对象
-
构造器对象.newInstance(实参列表):通过指定有参构造器构建类的实例对象
-
//利用c1对构建类的实例 Student stu1 = c1.newInstance(); //利用c3构建类的实例 Student stu2 =(Student) c3.newInstance(); //获取全属性的有参构造器对象 Constructor<Student> con = c1.getDeclaredConstructor(String.class, int.class, double.class); //构建一个学生对象实例 Student stu3 = con.newInstance("zhangsan", 20, 98.0);
优缺点
-
优点:
-
打破封装
-
提升代码的扩展性
-
-
缺点:
-
打破封装
-
代码可读性变差
-