Javaの反射の静的な負荷と動的な負荷例の小記

1529 ワード

静的読み込み:
package com.imooc.   ;

public class Office_Static {
	public static void main(String[] args) {
		//new     ,      ,                    
		if("Word".equals(args[0])){
			Word w = new Word();
			w.start();
		}
		if("Excel".equals(args[0])){
			Excel e = new Excel();
			e.start();
		}
	}
}
このプログラムはWordとExcelの二つの種類が存在しなければなりません。判断後、Excelが使えなくても、ロードします。
ダイナミックロード:
            1、インターフェースOfficeAble:
package com.imooc.   ;

public interface OfficeAble {
	public void start();
}
            2、Word実現インターフェース:
package com.imooc.   ;

public class Word implements OfficeAble{
	public void start(){
		System.out.println("word start");
	}

}
               3、Excel実現インターフェース:
package com.imooc.   ;

public class Excel implements OfficeAble{

	public void start(){
		System.out.println("excel start");
	}
}
               4、Main方法
package com.imooc.   ;

public class OfficeBetter {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			//     ,       
			Class c = Class.forName(args[0]);//         com.imooc.   .Excel
			//     ,      (    Word Excel     OfficeAble)
			OfficeAble oa = (OfficeAble)c.newInstance();
			oa.start();
			
			//       ,        Word  Excel,   
//			Word word = (Word)c.newInstance();
//			word.start();
//			Excel excel = (Excel)c.newInstance();
//			excel.start();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}