public class test { public static void main(String[] args) { // TODO Auto-generated method stub if("word".equals(args[0])){ Class c; try { c = Class.forName(args[0]); word w=(word)c.newInstance(); w.start(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if("excel".equals(args[0])){ Class c; try { c = Class.forName(args[0]); excel e=(excel)c.newInstance(); e.start(); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
如果我没有excel的类,在编译时还是会报错,并不能实现这个功能,
难道说只能用接口,那样只能体现接口的作用
之所以会报错是因为这里使用的是静态加载,在目录下没有写excel的类当然会报错了
老师讲的意思是如何在Excel类有问题的情况下使用没有问题的Word类的方法,首先就是要通过编译才能使用
如何在Excel类有问题的情况下通过编译呢,就是使用动态加载了,也就是说当某个类在要使用的时候才进行相关的编译与加载,不使用的话就不加载,这样这个程序作为整体来说就可以运行没有问题的Word类和方法,只有运行到错误的Excel类的方法的时候,程序才会提示错误。
所以这个问题的关键核心在于:
如何在一个可能存在错误类的情况下尽可能使用没有存在错误的类,而不是如何解决错误的类。
编译时还是会报错是因为编译器监测了此处使用excel的语法错误(未定义excel类)