静态加载与动态加载
2015-10-30 23:30
204 查看
创建Office,使用javac命令进行编译,会报错Word和Office找不到符号,如果我们创建了Word类,对Word使用javac进行编译,然后对Office进行编译,发现只报Excel找不到的错误。假设我们只想用Word的功能,程序没法使用。用不了的原因是,因为程序是做类的静态加载,在编译时刻就需要加载所有的可能使用到的类。在实际应用中,我们希望word存在,word就能用,用excel的时候才报错。这就是编译时刻加载导致的,new都是编译时刻加载。
通过动态加载可以解决该问题,在编译的时候,不会报错,只有在运行的时候才有可能报错。创建OfficeAble标准,Word和Office都实现这个接口,防止出现类型转换错误。现在使用java OfficeBetter Word,可以运行Word的方法,如果想运行Excel,只需要实现Excel这个类就行了,然后,OfficeBetter这个类不需要重新编译,直接运行即可。以后添加其他Office的实现,OfficeBetter这个类都不需要修改,只需要动态的加新的功能就可以了。功能性的类一般都使用动态加载,而不是静态加载。
class OfficeBetter{
public static void main(String[] args){
try{
//动态加载类,在运行时刻,编译时不会报错
Class c = Class.forName(args[0]);
//通过类类型创建对象,创建该类对象
OfficeAble oa =(OfficeAble) c.newInstance();
oa.start();
}catch (Exception e) {
e.printStackTrace();
}
}
}
class Office{ public static void main(String[] args){ //new 创建对象 是静态加载类,在编译时刻就需要加载所有的可能使用到的类。 if("Word".equals(args[0])){ Word word = new Word(); word.start(); } if("Excel".equals(args[0])){ Excel excel = new Excel(); excel.start(); } } }
通过动态加载可以解决该问题,在编译的时候,不会报错,只有在运行的时候才有可能报错。创建OfficeAble标准,Word和Office都实现这个接口,防止出现类型转换错误。现在使用java OfficeBetter Word,可以运行Word的方法,如果想运行Excel,只需要实现Excel这个类就行了,然后,OfficeBetter这个类不需要重新编译,直接运行即可。以后添加其他Office的实现,OfficeBetter这个类都不需要修改,只需要动态的加新的功能就可以了。功能性的类一般都使用动态加载,而不是静态加载。
class OfficeBetter{
public static void main(String[] args){
try{
//动态加载类,在运行时刻,编译时不会报错
Class c = Class.forName(args[0]);
//通过类类型创建对象,创建该类对象
OfficeAble oa =(OfficeAble) c.newInstance();
oa.start();
}catch (Exception e) {
e.printStackTrace();
}
}
}
interface OfficeAble{ public void start(); }
class Word implements OfficeAble{ public void start(){ System.out.println("Word start"); } }
相关文章推荐
- javascript动态加载二
- JavaScript 动态加载脚本和样式的方法
- 动态加载jQuery的两种方法实例分析
- 一个简单的动态加载js和css的jquery代码
- jquery select动态加载选择(兼容各种浏览器)
- 使用jquery动态加载javascript以减少服务器压力
- js 动态加载事件的几种方法总结
- javascript动态加载三
- ASP.net 动态加载控件时一些问题的总结
- 动态加载图片路径 保持JavaScript控件的相对独立性
- 多浏览器兼容的动态加载 JavaScript 与 CSS第1/2页
- Android 中动态加载.jar的实现步骤
- 实例讲解动态加载gridview中的行及其样式
- javascript动态加载实现方法一
- 动态加载图片路径 保持JavaScript控件的相对独立性
- js加载之使用DOM方法动态加载Javascript文件
- IE8中使用javascript动态加载CSS的解决方法
- angularJS与bootstrap结合实现动态加载弹出提示内容
- javascript的动态加载、缓存、更新以及复用(一)
- javascript中动态加载js文件多种解决办法总结