快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

一个用Class.forName()做的动态装载小东东,有助于理解Class.forName()的应用

一直都在连JDBC中用到Class.forName(),当用到XML动态解析分派的时候碰到了Class名字符串无法作为Class名实例化的问题,寻寻觅觅终于找到一个解决的办法:
public class DynamicLoader{
    public static void main(String args[]) throws Exception{
        Class toRun = Class.forName(args[0]);
        String[] newArgs=scrubArgs(args);
        Method mainMethod = findMain(toRun);
        mainMethod.invoke(null,new Object[]{newArgs});
    }
    private static String[] scruArgs(String[],args){
        String[] toReturn = new String[args.length-1];
        for(int i=0;i<args.length;i++){
              toReturn[i-1]=args[i].toLowerCase();
         }
        return toReturn;
    }
    private static Method findMain(Class clazz) throw Exception{
        Method[] method = class.getMethods();
        for(int i=0;i<method.length;i++){
           if(method[i].getName().equals(\"main\"))
               return method[i];
        }
        return null;
}
}
再来个简朴的测试程序:
public class Echoit{
      public static void main(String args[]){
              for(int i=0;i<args.length;i++){
                 System.out.println(\"Echo arg\"+i+\" = \"+args[i]);
                }
           }
}
都编译之后
java DynamicLoader Echo ONE TWO THERE
就可以看到效果了,既动态载入Echo又给它传了三个参数:)



返回类别: 教程
上一教程: Java连接各种数据库的实例
下一教程: MDA 与实现 MDA 的 Rational 工具 RSA ?? RSA“尝鲜会”归来

您可以阅读与"一个用Class.forName()做的动态装载小东东,有助于理解Class.forName()的应用"相关的教程:
· 一个用JSP做的日历
· Java动态调用类方式的应用
· Java数据对象(JDO)的应用
· 基于JSP的动态网站开发技术
· JAVA数据流的应用
    微笑服务 优质保证 索取样品