Java反射机制-动态加载类

在Java 中,有编译状态和运行状态
在编译状态加载的类称为静态加载类,在运行时刻加载的类称为动态加载类
动态加载类···,如何动态加载?
在引入这个问题前,我先说明一下,直接上图吧:



// 目前我车库里只有一台宝马车

接着我去cmd编译

你会发现,报错了,提示说找不到这个符号。很正常,因为确实没有Benchi这个类。
在Eclipse等等编译器中,根本就编译不过去,对吧? 很多人立刻就想到,加上这个类呀,不然肯定报错呀。
但是,有多少人会想: 为什么? 车库里没有奔驰车,我开宝马不行么??? 为什么现在连好好的宝马车都无法开 ??

我们是否得解决这问题? 没有奔驰车,但是宝马有呀,我能开吧??

PS: new 创建对象,是在编译时刻就创建的,因此编译时就要加载
如何解决? 这就可以用到java反射机制的动态加载类,在运行时刻才去加载:

我们创建Main2.java,换种方式去加载
Class c = Class.forName("类的全路径");

接着继续编译一下

可以发现,编译过去了,而且我们用Baoma的时候,也没问题,用Benchi时,才提示找不到这个类

在Class类篇,我们说过,可以通过类类型来创建类的实例对象(newInstance),因此,我们可以通过这个c,来创建想要的车, 但是,万一加载的是Baoma,但是创建的确实奔驰,怎么办?如何知道要创建什么车??

我们得创建一个车标准
这里,我们创建了一个Car标准

所有的车,车库里的车必须符合这个标准, 例如宝马

// 接着我们创建一辆车
Car car = (Car) c.newInstance();
car.run();

重新编译:

看到没? 我们现在需要用宝马车,是不是可以了··

当然,现在还是用不了奔驰,因为车库里根本就没有,如果需要使用,我们只需找一个人去生产奔驰车即可。 如下:


编译:


完美
只要我们需要什么使用什么车,就去生产一台,就不会再出现,有一台车没有,其他车也不能开的情况了

PS: 这也是所谓的工厂设计模式

资源已上传:http://download.csdn.net/detail/jaky0306/9762046

完毕.......
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值