java 反射 reflect 深入理解动态反射
2018-01-10 16:10
423 查看
说一下java中的反射机制,反射具体的定义我们就不啰嗦了。
一,说一下java 中反射的三种方式:1 ,Class.forName("包名.类名");2,java 为每个类型都提供了.class 属性,3,java 为每个类都提供了 “类实例".getClass;
二,我们主要来说一下第一种,也是在实际中用的最多的一种。因为后两种方式都需要创建实例对象,没有办法进行动态加载。 先来思考一个问题,如果我们现在有一个App应用已经上线,我们无法看到其源代码,我们还想给它添加功能,首先App需要给我们提供一个接口,实现动态添加功能。后两种方法就不能实现了。下面我们来一起分析一下。
三 1,下面我们来一个实例,用接口的方式实现动态。创建一个Car(车)的接口。
2,创建一个实现类,RedCar
3,创建一个中间类CarImpil public void car(接口类型 实例) 接口类型 = new 实现类
4,在 mian 方法中去实现多态
6,现在我们就实现多态了有不同的车 我们就 把不同的车的实例被 CarImpli.car()方法调用,下面我们用反射来实现看下效果
这种就是反射通过Class.froName("包名.类名").newInstance();创建它的实例;
7,现在用反射实现了,但是好像并没有完成我们上面的问题,现在我们把 实体对象拿出来,写入一个配置文件
car.properties 和在项目文件夹下创建
8,我们来写一个方法来读取配置文件的内容
这样我们就可实现上面所说的整个App都是封装好的,我们需要添加什么只需要通过car.properties 文件把它的(“包名.类名”)传进来就可以实现。我们所写的方法只要实现 Car这个接口,通过.properties文件 就可以了
总结:Class.forName() 这个方法可以拿到 java的字节码文件,你就可以操作关于它的一切,包括私有对象,关于反射 java 专门提供了java.lang.reflect 有详细的说明。大家体会一下,我们的Tomcat 中
web.xml spring 各种框架的配置是不是都是这种方式? 如有错误还挺谅解,并指出
一,说一下java 中反射的三种方式:1 ,Class.forName("包名.类名");2,java 为每个类型都提供了.class 属性,3,java 为每个类都提供了 “类实例".getClass;
二,我们主要来说一下第一种,也是在实际中用的最多的一种。因为后两种方式都需要创建实例对象,没有办法进行动态加载。 先来思考一个问题,如果我们现在有一个App应用已经上线,我们无法看到其源代码,我们还想给它添加功能,首先App需要给我们提供一个接口,实现动态添加功能。后两种方法就不能实现了。下面我们来一起分析一下。
三 1,下面我们来一个实例,用接口的方式实现动态。创建一个Car(车)的接口。
2,创建一个实现类,RedCar
3,创建一个中间类CarImpil public void car(接口类型 实例) 接口类型 = new 实现类
4,在 mian 方法中去实现多态
6,现在我们就实现多态了有不同的车 我们就 把不同的车的实例被 CarImpli.car()方法调用,下面我们用反射来实现看下效果
这种就是反射通过Class.froName("包名.类名").newInstance();创建它的实例;
7,现在用反射实现了,但是好像并没有完成我们上面的问题,现在我们把 实体对象拿出来,写入一个配置文件
car.properties 和在项目文件夹下创建
8,我们来写一个方法来读取配置文件的内容
这样我们就可实现上面所说的整个App都是封装好的,我们需要添加什么只需要通过car.properties 文件把它的(“包名.类名”)传进来就可以实现。我们所写的方法只要实现 Car这个接口,通过.properties文件 就可以了
总结:Class.forName() 这个方法可以拿到 java的字节码文件,你就可以操作关于它的一切,包括私有对象,关于反射 java 专门提供了java.lang.reflect 有详细的说明。大家体会一下,我们的Tomcat 中
web.xml spring 各种框架的配置是不是都是这种方式? 如有错误还挺谅解,并指出
相关文章推荐
- 深入理解Java:类加载机制及反射
- 深入理解Java:类加载机制及反射
- 深入理解 Java 反射:Method (成员方法)
- 深入理解JAVA JDK动态代理机制
- Java--Reflect(反射)专题2——动态加载类
- 从”JAVA“而终 20:深入理解Java的内省与反射
- 深入理解 Java 反射:Class (反射的入口)
- 深入理解Jvm--Java静态分配和动态分配完全解析
- 深入理解 Java 反射:Field (成员变量)
- Java学习笔记之深入理解动态绑定和静态绑定
- java深入理解反射机制
- JAVA反射深入理解
- 深入理解java动态代理的两种实现方式(JDK/Cglib)
- 深入理解Java反射:候捷谈Java反射机制
- java反射和动态代理的理解
- 深入理解Java反射
- 深入理解Java反射:候捷谈Java反射机制
- 深入理解java动态代理机制
- 深入理解 Java 反射:Class (反射的入口)
- 深入理解Java:类加载机制及反射