问答详情
源自:2-1 Java 动态加载类

这个也没有解决说如果excel没有这个类还能运行啊

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的类,在编译时还是会报错,并不能实现这个功能,

难道说只能用接口,那样只能体现接口的作用

提问者:小不点2016 2016-08-05 18:29

个回答

  • Wintisy
    2016-08-05 19:01:39
    已采纳

    之所以会报错是因为这里使用的是静态加载,在目录下没有写excel的类当然会报错了

    老师讲的意思是如何在Excel类有问题的情况下使用没有问题的Word类的方法,首先就是要通过编译才能使用

    如何在Excel类有问题的情况下通过编译呢,就是使用动态加载了,也就是说当某个类在要使用的时候才进行相关的编译与加载,不使用的话就不加载,这样这个程序作为整体来说就可以运行没有问题的Word类和方法,只有运行到错误的Excel类的方法的时候,程序才会提示错误。

    所以这个问题的关键核心在于:

    如何在一个可能存在错误类的情况下尽可能使用没有存在错误的类,而不是如何解决错误的类。

  • 1225903428
    2016-08-05 18:57:43

    http://img.mukewang.com/57a470a70001247503680361.jpg

    编译时还是会报错是因为编译器监测了此处使用excel的语法错误(未定义excel类)