遍历参数数组-Java反射

遍历参数数组-Java反射,java,reflection,Java,Reflection,我是java新手,无法理解为什么第二种迭代参数的方法会引发异常。 有趣的是param=null通过,但稍后我会得到ArrayIndexOutofBounds异常。 我看了下面的链接。但这对我没有帮助。 import java.lang.reflect.*; 公共类测试反射{ 公共静态void main(字符串[]args){ Class c=(Class)反映this.Class; System.out.println(“公共类”+c.getName()); System.out.printl

我是java新手,无法理解为什么第二种迭代参数的方法会引发异常。 有趣的是
param=null
通过,但稍后我会得到
ArrayIndexOutofBounds
异常。 我看了下面的链接。但这对我没有帮助。

import java.lang.reflect.*;
公共类测试反射{
公共静态void main(字符串[]args){
Class c=(Class)反映this.Class;
System.out.println(“公共类”+c.getName());
System.out.println(“{”);
方法methods[]=c.getMethods();
用于(方法m:方法)
{
如果(m.isAccessible())
系统输出打印(“公共”);
其他的
系统输出打印(“专用”);
System.out.print(m.getName()+“(”);
//System.out.println(“参数”);
参数[]params=null;
params=m.getParameters();
//迭代thr参数的方法1
用于(参数p:params)
{
if(p==null)
打破
System.out.print(p.getType()+“”+p.getName()+“”,“”);
}
params=m.getParameters();
//迭代thr参数的方法2
如果(参数!=null)
{
for(int i=0;params[i]!=null;i++)
{
System.out.print(params[i].getType()+“”+params[i].getName());
if(参数[i+1]!=null)
系统输出打印(“,”);
}
}
System.out.println(“);”;
}
System.out.println(“}”);
}
}

你简直是越界了

 for(int i=0; params[i] != null; i++)
 {
      System.out.print(params[i].getType()+ " " +params[i].getName());
      if(params[i+1] != null)
           System.out.print(", ");
 }
如果您有两个参数,即
i
0
变为
1
,则您将尝试访问

params[1]
params[2] // out of bounds
这基本上总是超出范围的,因为您尝试访问的元素数超过数组中的元素数

以下是使用
正确连接元素的方法:


    • 你简直是在越界

       for(int i=0; params[i] != null; i++)
       {
            System.out.print(params[i].getType()+ " " +params[i].getName());
            if(params[i+1] != null)
                 System.out.print(", ");
       }
      
      如果您有两个参数,即
      i
      0
      变为
      1
      ,则您将尝试访问

      params[1]
      params[2] // out of bounds
      
      这基本上总是超出范围的,因为您尝试访问的元素数超过数组中的元素数

      以下是使用
      正确连接元素的方法:


        • 你简直是在越界

           for(int i=0; params[i] != null; i++)
           {
                System.out.print(params[i].getType()+ " " +params[i].getName());
                if(params[i+1] != null)
                     System.out.print(", ");
           }
          
          如果您有两个参数,即
          i
          0
          变为
          1
          ,则您将尝试访问

          params[1]
          params[2] // out of bounds
          
          这基本上总是超出范围的,因为您尝试访问的元素数超过数组中的元素数

          以下是使用
          正确连接元素的方法:


            • 你简直是在越界

               for(int i=0; params[i] != null; i++)
               {
                    System.out.print(params[i].getType()+ " " +params[i].getName());
                    if(params[i+1] != null)
                         System.out.print(", ");
               }
              
              如果您有两个参数,即
              i
              0
              变为
              1
              ,则您将尝试访问

              params[1]
              params[2] // out of bounds
              
              这基本上总是超出范围的,因为您尝试访问的元素数超过数组中的元素数

              以下是使用
              正确连接元素的方法:


                • 好的,错误在于:

                  for(int i = 0; params[i].....
                  
                  如果params为空,则会引发异常。示例:params在元素中具有。尝试获取第0个元素将超出范围

                  为确保不会发生这种情况,请执行以下操作:

                  for(int i = 0; i < params.length && params[i]...
                  
                  for(int i=0;i
                  好的,错误在于:

                  for(int i = 0; params[i].....
                  
                  如果params为空,则会引发异常。例如:params具有in元素。尝试获取第0个元素将超出范围

                  为确保不会发生这种情况,请执行以下操作:

                  for(int i = 0; i < params.length && params[i]...
                  
                  for(int i=0;i
                  好的,错误在于:

                  for(int i = 0; params[i].....
                  
                  如果params为空,则会引发异常。例如:params具有in元素。尝试获取第0个元素将超出范围

                  为确保不会发生这种情况,请执行以下操作:

                  for(int i = 0; i < params.length && params[i]...
                  
                  for(int i=0;i
                  好的,错误在于:

                  for(int i = 0; params[i].....
                  
                  如果params为空,则会引发异常。例如:params具有in元素。尝试获取第0个元素将超出范围

                  为确保不会发生这种情况,请执行以下操作:

                  for(int i = 0; i < params.length && params[i]...
                  
                  for(int i=0;i
                  在这一行中,如果i大于上一个索引,则会出现异常:

                  for(int i=0; params[i] != null; i++)
                  
                  您必须更改为:

                  for(int i=0; i<params.length; i++)
                  

                  for(int i=0;i在这一行中,如果i大于上一个索引,则会出现异常:

                  for(int i=0; params[i] != null; i++)
                  
                  您必须更改为:

                  for(int i=0; i<params.length; i++)
                  

                  for(int i=0;i在这一行中,如果i大于上一个索引,则会出现异常:

                  for(int i=0; params[i] != null; i++)
                  
                  您必须更改为:

                  for(int i=0; i<params.length; i++)
                  

                  for(int i=0;i在这一行中,如果i大于上一个索引,则会出现异常:

                  for(int i=0; params[i] != null; i++)
                  
                  您必须更改为:

                  for(int i=0; i<params.length; i++)
                  

                  for(inti=0;i看起来像是在数组上循环并附加“,”除了最后一个条目。下面应该可以
                  还需要检查边界条件

                          for(int i=0; i<params.length; i++)
                          {
                              if(params[i] != null)
                              {
                               System.out.print(params[i].getType()+ " " +params[i].getName());
                  
                               if(i != params.length-1)
                                   System.out.print(", ");
                              }
                          }
                  

                  for(inti=0;i看起来像是在数组上循环并附加“,”除了最后一个条目。下面应该可以
                  还需要检查边界条件

                          for(int i=0; i<params.length; i++)
                          {
                              if(params[i] != null)
                              {
                               System.out.print(params[i].getType()+ " " +params[i].getName());
                  
                               if(i != params.length-1)
                                   System.out.print(", ");
                              }
                          }
                  

                  for(inti=0;i看起来像是在数组上循环并附加“,”除了最后一个条目。下面应该可以
                  还需要检查边界条件

                          for(int i=0; i<params.length; i++)
                          {
                              if(params[i] != null)
                              {
                               System.out.print(params[i].getType()+ " " +params[i].getName());
                  
                               if(i != params.length-1)
                                   System.out.print(", ");
                              }
                          }
                  

                  for(inti=0;i看起来像是在数组上循环并附加“,”除了最后一个条目。下面应该可以
                  还需要检查边界条件

                          for(int i=0; i<params.length; i++)
                          {
                              if(params[i] != null)
                              {
                               System.out.print(params[i].getType()+ " " +params[i].getName());
                  
                               if(i != params.length-1)
                                   System.out.print(", ");
                              }
                          }
                  

                  用于(int i=0;iThanks,这样我可以使用方法一在所有参数(但最后一个参数除外)之后添加逗号。谢谢,这样我可以使用方法一在所有参数(但最后一个参数除外)之后添加逗号。谢谢,这样我可以使用方法一在所有参数(但最后一个参数除外)之后添加逗号。谢谢。i当方法没有参数时,参数应为null。但是我错了。谢谢。当方法没有参数时,我希望参数为null。但是我错了。