反射 学习笔记之动态加载类
2015-04-09 20:49
316 查看
1 Class.forName("类的全名")不仅表示了类的类类型,还代表了动态加载类
2 编译时刻加载类称之为静态加载,运行时刻加载类是动态加载类
3 new 对象是静态加载类,在编译时刻就需要加载所有的可能使用的类(编译时刻加载)
用Edit写一个reflectDemo2,里面有俩个命令行参数判断的代码word,execl,我们在同一个文件夹下写一个word类不写execl类,我们假如只想运行word不想运行execl,但是很不幸,由于这是静态加载,javacreflectDemo2编译时是将其中所有类都要加载,只有word但是找不到execl类直接编译出错!
运行就出错了
![](http://img.blog.csdn.net/20150409205306653?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvWFNGNTA3MTc=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
下面我们使用动态加载定义better类,依然还是只定义了一个word类,为了方便扩展,定义了一个接口
接口如下
依然是只有一个word类,没有excel类这次使用动态加载这次可以顺利编译成功了!
2 编译时刻加载类称之为静态加载,运行时刻加载类是动态加载类
3 new 对象是静态加载类,在编译时刻就需要加载所有的可能使用的类(编译时刻加载)
用Edit写一个reflectDemo2,里面有俩个命令行参数判断的代码word,execl,我们在同一个文件夹下写一个word类不写execl类,我们假如只想运行word不想运行execl,但是很不幸,由于这是静态加载,javacreflectDemo2编译时是将其中所有类都要加载,只有word但是找不到execl类直接编译出错!
class reflectDemo2 { public static void main(String[] args) { if("word".equals(args[0])) { word w = new word(); w.start(); } if("word".equals(args[0])) { excel e = new excel(); e.start(); } } }
class word { start() { System.out.println("Word!"); } }
运行就出错了
下面我们使用动态加载定义better类,依然还是只定义了一个word类,为了方便扩展,定义了一个接口
class better { public static void main(String[] args) { try { //动态加载类 Class c = Class.forName(args[0]); //通过类类型,创建对象 Office oa = (Office)c.newInstance(); oa.start(); } catch (Exception e) { e.printStackTrace(); } } }此时word继承Office接口
class word implements Office { public void start() { System.out.println("Word!"); } }
接口如下
interface Office { public void start(); }
依然是只有一个word类,没有excel类这次使用动态加载这次可以顺利编译成功了!
相关文章推荐
- 反射 学习笔记之动态加载类
- Cedar老师的java中的反射学习笔记(二)--动态加载
- java反射学习笔记(2)----java中的静态加载类和动态加载类
- java反射学习笔记之 动态加载类
- 忆龙2009:Silverlight学习笔记-根据需要动态加载应用程序集
- wince驱动学习笔记(vs2005实现流驱动动态加载与卸载 2)
- 15. JAVA 反射机制 Part 2(动态代理、类的生命周期、工厂设计模式) ----- 学习笔记
- C#动态加载DLL(反射学习(二))
- perl学习笔记(4)——动态加载
- 忆龙2009:Silverlight学习笔记-根据需要动态加载应用程序集
- as3学习笔记3:Loader动态加载图片
- wince驱动学习笔记(vs2005实现流驱动动态加载与卸载 1)
- iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
- iPhone开发学习笔记002——Xib设计UITableViewCell然后动态加载
- [学习笔记]ajax 动态加载的FAQ (frequently asked question)
- wince驱动学习笔记(vs2005实现流驱动动态加载与卸载 1)
- iPhone开发学习笔记——Xib设计UITableViewCell然后动态加载
- java学习笔记---类型信息(type information)、反射机制与动态代理
- perl学习笔记(4)——动态加载
- Quartz.net 2.x 学习笔记03-使用反射加载定时任务