反射的三种方式
1.第一种方式:Object——>getClass()
因为Object类中存在getClass()方法,而所有类都继承了Object类,所以可以调用Object类来获取。
例如:
Student stu=new Student();
Class stuclass1=stu.getClass();
System.out.printIn(stuclass1);
· 但第一种方式下,对象都已经有了还要反射什么,所以几乎不用这种方式。
2.第二种方式:任何数据类型(包括基本数据类型)都有一个“静态”的class属性,我们可以据此获得。
例如:
Class stuclass2=Stundent.getClass();
System.out.printIn(stuclass2);
· 第二种序号导入类的包,依赖性太强,不导入包就会抛出编译错误,所以用的也不多。
3.第三种方式:通过Class的静态方法forName(String className)。
例如:
Class stuclass3=Class.forName("myj.Student");
System.out.printIn(stuclass3);
· 一般我们使用的都是第三种方式,一个字符串可以传入也通过配置文件导入。(这里需要注意,通过类的全路径名获取Class对象会抛出一个异常,如果根据类路径找不到这个类那么就会抛出这个异常。)