Java反射之静态加载和动态加载的简单实例
静态加载:
packagecom.imooc.加载类; publicclassOffice_Static{ publicstaticvoidmain(String[]args){ //new创建对象,是静态加载类,在编译时刻就需要加载所有的可能使用到的类 if("Word".equals(args[0])){ Wordw=newWord(); w.start(); } if("Excel".equals(args[0])){ Excele=newExcel(); e.start(); } } }
这个程序编译时必须有Word和Excel这两个类存在才行,即使判断后用不到Excel也要加载
动态加载:
1、接口OfficeAble:
packagecom.imooc.加载类; publicinterfaceOfficeAble{ publicvoidstart(); }
2、Word实现接口:
packagecom.imooc.加载类; publicclassWordimplementsOfficeAble{ publicvoidstart(){ System.out.println("wordstart"); } }
3、Excel实现接口:
packagecom.imooc.加载类; publicclassExcelimplementsOfficeAble{ publicvoidstart(){ System.out.println("excelstart"); } }
4、Main方法
packagecom.imooc.加载类; publicclassOfficeBetter{ /** *@paramargs */ publicstaticvoidmain(String[]args){ try{ //动态加载类,在运行时刻加载 Classc=Class.forName(args[0]);//在运行配置里面输入com.imooc.加载类.Excel //通过类类型,创建该类对象(先转换为Word和Excel的共同接口OfficeAble) OfficeAbleoa=(OfficeAble)c.newInstance(); oa.start(); //不推荐下面两种,因为不确定是加载Word还是Excel,要强转 // Wordword=(Word)c.newInstance(); // word.start(); // Excelexcel=(Excel)c.newInstance(); // excel.start(); }catch(Exceptione){ e.printStackTrace(); } } }
以上就是小编为大家带来的Java反射之静态加载和动态加载的简单实例的全部内容了,希望对大家有所帮助,多多支持毛票票~