Javaの反射の静的な負荷と動的な負荷例の小記
1529 ワード
静的読み込み:
ダイナミックロード:
1、インターフェースOfficeAble:
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();
}
}
}