java反射原理,动态加载(软件版本升级)
来源:互联网 发布:java获取服务器ip地址 编辑:程序博客网 时间:2024/06/07 00:25
1,类是对象,类是 java.lang.Class 类的实例对象
2,Class 类的构造方法只能 jvm 访问。
3,定义一个类并实例化
Foo foo1 = new Foo();
任何一个类都是 Class 类的实例对象,这个实例对象有三种表示方法
(1),Class c1 = Foo.class //实际告诉我们任何一个类都有一个静态成员变量 class
(2),Class c2 = foo1.getClass() //通过调用该类的对象的 getClass 方法
(3),Class c3 = null ;
c3 = Class.forName( pageName.className);
c1 , c2 ,c3 表示了 Foo 类的类类型( class type ),不管 c1 还是 c2 都代表 Foo 的类类型,一个类只能是Class的一 个实例对象,所以 c1 == c2 返回的是 true 。
4,通过类类型构造类的对象
Foo foo1 = ( Foo ) c1.newInstance() //前提是该类有无参的构造方法
5,动态加载与静态加载
new 创建对象是静态加载类,在编译过程中会加载所有可能使用到的类。
class Test{
public static void main (String [] args){
if("word".equals(args[0])){
Word word = new Word();
word.start()
}
if("excel".equals(args[0])){
Excel excel = new Excel();
excel.start();
}
}
class Word{
public void start(){
}
}
}
虽然不一定用到所有方法,但是由于Excel方法没有定义,编译不会通过,如果有一个项目有100个功能,有一个有问 题,那么整个项目就不能部署了。 可以通过动态加载改进:
//动态加载类,在运行时刻加载
Class c = Class.forName( args[0] );
//通过类类型创建该类对象
Word word = c.newInstance();
//但是不确定要创建的是Word还是Excel,可以给两者指定一个标准
(1) interface Office {
public void start ();
}
(2)class Word implements Office{
public void start(){
}
}
(3)Office of = c.newInstance();
6,应用: 软件版本升级
版本更新不需要改动代码,只需加入新功能并实现 Office 接口即可
- java反射原理,动态加载(软件版本升级)
- java反射:动态加载类
- Java利用反射动态加载类实战
- 动态加载类(JAVA反射机制)
- Java反射机制之动态加载
- Java反射——动态加载类
- java反射之动态加载类
- Java反射(二)----- 动态加载类
- Java反射第二课 动态加载类
- Java反射第二课 动态加载类
- JAVA反射之动态加载类
- Java反射机制-动态加载类
- java动态编译,反射加载类
- Java反射之静态加载和动态加载举例小记
- JAVA反射机制--静态加载与动态加载
- JAVA反射机制--静态加载与动态加载
- 使用反射动态加载
- java反射机制---java的动态加载详解
- cnpm run dev启动报错,解决办法
- Android开发基础,保存用户输入的用户名和密码
- 散列文件的存储——‘桶’
- mybatis批量插入数据
- dubbo
- java反射原理,动态加载(软件版本升级)
- Fusioncharts API参考方法(Functions)总结
- 控制精灵移动
- 慢SQL熔断方案
- JAVA并发处理注意事项
- XShell+Xmanager实现在XShell中显示远程服务器的图形界面
- tomcat内存调优案例
- 《深入理解Java虚拟机》学习笔记(8)--线程安全与锁优化
- Qt学习—qt共享内存的使用