本周前几天看了关于spring在上周没看完的视屏,关于spring的aop方面的xml和annotation配置。后面看了一些关于反射的知识。
在java中,每次java解释器加载一个类,都会把跟这个类有关的类加载到解释器中,而解释器会自动维护一个class类型,当加载一个类时就自动生成一个class类型的关于加载类的一个对象,这个对象维护着关于这个类的所有信息,并且每个类都只会生成一个class实例,所以可以用==来区别不同的类。通过这个class类型可以在程序运行过程中得到一个类的所有信息(其实得到的东西像一个接口)。
class类型可以有三种方式得到:class.forName(String);实例.getClass();类型.class;
得到class类型之后可以通过getDeclaredConstructors()方法得到该类的所有构造方法,通过getDeclaredFields()得到该类的所有数据域;通过getDeclaredMethods()得到该类的所有方法;这三个方法所返回的对象都会有一个getModifiers()方法,该方法返回一个Modifier对象,通过该对象可以得到方法、数据域、或者构造器的修饰符,例如(public,static,final,native等)。通过反射还能生成类的实例。