1、new 出来的都是静态加载类,一招出错,全盘皆输。
如
class Office{ pulbic static void mian(Stirng[] args){ if("Word".equals(args[0])){ Word w = new Word(); w.start(); } } }
new 对象 都是静态加载的类,在编译时就需要全部加载需要用到的类,不管你用不用到...
所以你需要有Word的类...
需要解决就要用到动态加载类..
2、动态加载类
如何动态加载类呢
我们可以通过类类型,创建该类的对象
如先创建一个接口,让他的类去实现这个接口从而实现动态加载
public interface OfficeAble { public void start(); }
public 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) { // TODO: handle exception e.printStackTrace(); } } }
public class Word implements OfficeAble{ public void start() { // TODO Auto-generated method stub } }
所以以后需要加载什么类,我们都可以去创建一个这个类类型去动态加载....
Class c = Class.forName(args[0]);
OfficeAble oa = (OfficeAble)c.newInstance();//OfficeAble定义的功能类型接口