日期:2014-05-20  浏览次数:20774 次

请帮忙看一下哪里出错了?关于invoke()
import   java.lang.reflect.*;
class   ClassA
{
          public   static   void   main(String[]   args)
          {
                      if(args.length!=1)
            {
                  return;
            }
            try
            {
                  Class   c=Class.forName(args[0]);
                  Constructor[]   cons=c.getDeclaredConstructors();
                  Class[]   params=cons[0].getParameterTypes();
                  Object[]   paramValues=new   Object[params.length];
                  for(int   i=0;i <params.length;i++)
                  {
                        if(params[i].isPrimitive())
                        {
                                  paramValues[i]=new   Integer(i+3);                             }
                    }
                  Object   o=cons[0].newInstance(paramValues);
                  Method[]   ms=c.getDeclaredMethods();
                  ms[0].invoke(o,null);//出错行
            }
          catch(Exception   e)
          {
                      e.printStackTrace();
          }
             
  }
}

class   Point
{
        static
        {
              System.out.println( "Loading   Point ");
        }
        int   x,y;
        void   output()
        {
                System.out.println( "x= "+x+ ", "+ "y= "+y);
        }
       
      Point(int   x,int   y)
      {
                  this.x=x;
                  this.y=y;
      }
}

------解决方案--------------------
以上程序运行没有错误:
java ClassA Point
执行结果为:
Loading Point
x=3,y=4