day01--Java反射
学Java反射,明白三点就足够了(1).java(Java的源文件),通过编译生成的.class(字节码文件),要通过jvm(java虚拟机)加载到内存中运行,在加载的过程中会创建一个.class文件的文件对象,通过这个对象可以实现对.class文件的解析(2)通过解析.class文件,我们可以获得类的构造函数(可以用来创造对象),属性和方法。值得注意的一点,属性和方法是对于一个类的实例而
学Java反射,明白三点就足够了
(1).java(Java的源文件),通过编译生成的.class(字节码文件),要通过jvm(java虚拟机)加载到内存中运行,在加载的过程中会创建一个.class文件的文件对象,通过这个对象可以实现对.class文件的解析
(2)通过解析.class文件,我们可以获得类的构造函数(可以用来创建对象),属性和方法。值得注意的一点,属性和方法是对于一个类的实例而言的。
(3)反射起到的作用:一个已经编写好的程序,要添加新的功能。修改源码是非常困难的。我们可以通过反射,把拥有新功能的类加载到内存,然后利用反射获取这个类(属性和方法等),把这个类实现的功能添加到原来的程序中。要注意的是,反射机制是运行时候才产生的。
1.获取加载类对象
方式一: 通过Object类中的getObject()方法
Person p = new Person();
Class c = p.getClass();
方式二: 通过 类名.class 获取到字节码文件对象(任意数据类型都具备一个class静态属性,看上去要比第一种方式简单)。
Class c2 = Person.class;
方式三: 通过Class类中的方法(将类名作为字符串传递给Class类中的静态方法forName即可)。
Class c3 = Class.forName("Person");
我都是选用方法三
2.获取类的构造函数并且初始化对象
(1)不带参数
(2)带有参数
(3)对象的初始化
3.获取类的属性并且修改对象属性
(1)获取类的属性
4.获取类的函数并且调用对象的函数
(1)获取函数
5.反射的应用实例
(1)反射配置文件
为什么要使用反射配置文件?
创建了三个类Person Student Worker,每一个里面都已各自的方法,使用Test测试里面的方法,每测试一个都要实例化一个对象,也就是说要不断的修改源码,这种方式不好。我们可以通过反射,使用Peoperties.txt通过键值对的方式把类和方法存储起来,当要使用不同的类中的方法的时候只要修改键值对就可以了。Peoperties.txt的键值对如下:
具体的实现:
(1) 利用I/O把键值对读取出来
(2) 利用获取出来的类和方法,创建对象,获取方法,调用方法
更多推荐
所有评论(0)