Class类的动态加载使用

Class.forName("类全名")

1.不仅表示类类名,还表示动态加载类

2.编译时是静态加载类,运行时是动态加载类

 

由于用IDE无法很好的展示编译过程,所以用cmd javac编译.java文件

静态加载类:

Office.java

class Office
{
	public static void main(String[] args) {
		if ("Word".equals(args[0])) 
			//new是静态加载类,在编译的时候就要实现所有类
		    //这意味着当有一个类不能加载成功
		    //那么其他的类都无法加载成功
		    //动态加载类就能实现只有当使用这个类的时候才去加载这个类
		    //
		{
			Word w = new Word();
			w.start();
		}
		if ("Excel".equals(args[0])) 
		{
			Excel e = new Excel();
			e.start();
		}
	}
}

Word.java

class Word implements OfficeAble
{
	public static void start(){
		System.out.println("Word start");
	}
}

即使有Word类Office.java也不能完成编译!

动态加载类:

OfficeBetter.java

class OfficeBetter
{
	public static void main(String[] args) {
		//动态加载类,在运行时加载类
		try{
        Class c = Class.forName("args[0]");
        //通过类类型,创建该类的对象,
        //如果只是创建一个Word或者Excel的对象
        //那就只能使用这一类的对象的方法(只能使用Word或者Excel的方法)
        //所以创建个统一标准
        OfficeAble oa = (OfficeAble)c.Instance();
        oa.start();
		}
		catch(Exception e){
			e.printStackTrace();
                
		}
	}
}

OfficeAble.java

interface OfficeAble{
	public void start();
}

 

使用 javac OfiiceBetter.java Word 即可调用star

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值