27.反射的原理是什么
反射是为了能够动态的加载一个类,动态的调用一个方法,动态的访问一个属性等动态要求而设计的。它的出发点就在于JVM会为每个类创建一个java.lang.Class类的实例,通过该对象可以获取这个类的信息,然后通过使用java.lang.reflect包下得API以达到各种动态需求。
28.Class类的含义和作用是什么、
每一个Class类的对象就代表了一种被加载进入JVM的类,它代表了该类的一种信息映射。开发者可以通过3种途径获取到Class对象。
- Class的forName()方法的返回值就是Class类型,也就是动态导入类的Class对象的引用。
public static Class<?> forName(String className) throws ClassNotFoundException - 每个类都会有一个名称为Class的静态属性,通过它也是可以获取到Class对象的,示例代码如下:
Class<Student> clazz = Student.class; // 访问Student类的class属性 - Object类中有一个名为getClass的成员方法,它返回的是对象的运行时类的Class对象。因为Object类是所有类的父类,所以,所有的对象都可以使用该方法得到它运行时类的Class对象,示例代码如下:
Student stu = new Student();
Class<Student> clazz = stu.getClass(); // 调用Student对象的getName方法