1. package com.test;  
  2.  
  3. import java.lang.reflect.Constructor;  
  4. import java.lang.reflect.Method;  
  5.  
  6. public class DemoTest2  
  7. {  
  8.     public DemoTest2(String s1, String s2)  
  9.     {  
  10.         System.out.println(s1);  
  11.         System.out.println(s2);  
  12.     }  
  13.       
  14.     public void output(String str)  
  15.     {  
  16.         System.out.println("hello: " + str);  
  17.     }  
  18.       
  19.     @SuppressWarnings("unchecked")  
  20.     public static void main(String[] args)throws Exception  
  21.     {  
  22.           
  23.        // 1. 得到该对象所对应的Class对象  
  24.        Class<DemoTest2> clazz = DemoTest2.class;  
  25.           
  26.        //2. 通过该Class对象得到该类的构造方法所对应的Constructor对象  
  27.         Constructor cons = clazz.getConstructor(new Class[]{String.class, String.class});  
  28.                   
  29.         //3. 通过该Constructor对象的newInstance方法得到该类的一个实例(对象)  
  30.         DemoTest2 test = (DemoTest2)cons.newInstance(new Object[]{"abc","xyz"});  
  31.          
  32.         //4. 通过该Class对象得到该方法所对应的Method对象  
  33.         Method method = clazz.getMethod("output",new Class[]{String.class});  
  34.           
  35.         //5. 通过该Method对象的invoke方法进行调用  
  36.         method.invoke(test,new Object[]{"zhangsan"});  
  37.           
  38.           
  39.         //new DemoTest2().output("zhangsan");  
  40.     }  
  41. }