我在论坛上也搜出几篇动态加载类的问题,但是我还是提出来,请大家多多指教!我的想法很简单:知道要加载类的类名及方法名,现在在其它类中如何执行加载类的方法??

解决方案 »

  1.   

    测试代码:
    import java.lang.reflect.*;
    class A{
    public A(){
    System.out.println("Test()");
    }
     public void test(){
      System.out.println("test()");
      }
    }
    public class TestA {    public static void main(String[] args) throws Exception{
           Constructor a= A.class.getConstructor();
            ((A)(a.newInstance())).test();
        
        
      }
    }
      

  2.   

    import java.lang.reflect.*;
    class A{
    public A(){
    System.out.println("Test()");
    }
     public void f(){
         System.out.println("f()");
      }
    }
    public class TestA {    public static void main(String[] args) {
           try{
           Class c =Class.forName(args[0]);//使用String数组!
           Constructor a= c.getConstructor();
            String name = "f";
            Object paramsObj[] = {};
            Method[] s = c.getDeclaredMethods();
            for(int i=0;i<s.length;i++){
              if(args[1].equals(s[i].getName()))
            
            s[i].invoke(a.newInstance(), paramsObj);     
            }      }catch(Exception e){
          System.out.println("No Class: "+e);
        }
      }
    }
    ^_^,终于搞出来了! 呵呵 ,到时运行 java A f 就可以了!
      

  3.   

    ^_^ 用这个吧 :
    import java.lang.reflect.*;
    class A{
    public A(){
    System.out.println("Test()");
    }
     public void f(){
         System.out.println("f()");
      }
    }
    public class TestA {    public static void main(String[] args) {
           try{
           Class c =Class.forName(args[0]);//使用String数组!
           Constructor a= c.getConstructor();
            Object paramsObj[] = {};
            Method[] s = c.getDeclaredMethods();
            for(int i=0;i<s.length;i++){
              if(args[1].equals(s[i].getName())){
            
                 s[i].invoke(a.newInstance(), paramsObj);
               }     
            }      }catch(Exception e){
          System.out.println("No Class: "+e);
        }
      }
    }