java反射(reflect)
两个重要的认识
-
编译期间: 程序员在.java文件中写好的代码,然后编译成.class文件,在编程的时候由程序员指定的类与类之间的继承关系
类的方法和属性是在程序员编程时确定好的,jvm拿着这个程序就可以直接运行.
-
运行期间: 程序员在写程序时,对于类中的方法和属性,并没有指定具体的调用方式和属性值,方法的调用,和属性的赋值是
在程序运行期间,由jvm动态指定的方法的调用方式,和属性值
什么是反射
如何使用反射
一个重要的认识
Class对象中的信息
-
可以获取类的属性,属性的修饰符,属性的名字,属性的类型
-
可以获取类中的方法,方法的修饰符,方法的返回值类型,方法的名字,方法的参数列表
-
可以获取类中的构造函数,构造的修饰符,构造的参数列表
-
可以获取类中的注解 注解的名字,注解的属性值
结论,有了反射对象可以动态的获取类中的信息,可以由程序员在运行期间动态的指定方法的调用方式,以及属性值,但是获取Class对象的代码是在编译期间写好的,以及调用方法和指定属性的原则也是在编译期间指定的,然后有jvm在运行期间动态的调用方法和指定属性,(注意:反射会获得类中私有的属性和方法,极其不安全)
反射的一些api
-
用反射的方式创建对象
-
使用反射的方式获取类中的属性,以及指定属性的值
-
用反射的方式获取方法的信息
反射的优点:
反射的缺点: