Java中类的显式动态加载的两种方式

来源:互联网 发布:阿里云企业邮箱收费吗 编辑:程序博客网 时间:2024/06/03 05:33

一、利用Class.froName方法

eg:
  try {
   Class cl = Class.forName("edu.buaa.etei.wsrv.test.SonClass");
   FatherClass cls = (FatherClass) cl.newInstance();
   cls.test();
  } catch(Exception   e   ){}

二、结合Java的反射机制

eg:

import   java.lang.reflect.*;   
    
      Stirng   className   =   "test.Test";   

      try   {  
   
              Class   cla   =   Class.forName(className);   

              //   得到test()方法的调用入口。
              Method   method   =   cla.getMethod("test",   null);  

              //   用invoke执行test方法,ret是返回值(如果test方法返回void,则ret==null) 
              Object   ret   =   method.invoke(cla.newInstance(),   null   );  
   
      }catch(Exception   e   ){}

说明:

Method的invoke就好比是c语言中获得方法的指针一样!  
  一般步骤是,首先声明你所要调用方法的参数的类类型数组  
  如果你的方法要使用一个int型数据作为参数,那么  
  Class[]   args={Integer.class};  
  然后,使用classname加载该类Class   myclass1   =   Class.forName("aaa");  
  接着Method   mymethod1   =   myclass1.getMethod("methodname",args);  
  最后声明方法参数Object   args2={new   Integer(5)};  
  mymethod1.invoke(myclass1.newInstance(),args2);就可以了 

原创粉丝点击