Java--反射(二) Java动态加载类

本文对比了Java中动态加载类与静态加载类的区别,重点介绍了Class.forName方法用于动态加载类的过程,以及这种方式如何提高编程灵活性。
Class.forName(String className);

这个除了表示类的类类型,还表示动态加载类

A a = new A();

而 new 创建对象 是静态加载类,在编译时刻就需要所有的可能使用到的类


动态加载类、静态加载类:

静态加载类:编译时刻加载;
动态加载类:运行时刻加载;

class 优快云 
{
    public static void main(String[] args)
    {
       try {
           Class c = Class.forName("xxx");
           优快云Able oa =(优快云Able)c.newInstance();
           oa.start();
       } catch (Exception e) {
           //TODO: handle exception
           e.printStackTrace();
       }
    }     
}
interface 优快云Able
{
    public void start();
}

当我需要调用其他类的start()时,只要该类引用优快云Able接口并重写start()方法时,就可以调用成功,并不需要编译前写好,只需要在运行前写好该类即可。所以动态加载大大增加了编程的灵活性,我可以先摆着这个类而不去实现。但是用new来创建对象则不能。




以上大部分内容来源于慕课网的”反射——Java高级开发必须懂的”课程,网址是http://www.imooc.com/learn/199,感谢Cedar老师的辛勤付出!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值