您的位置:首页 > 编程语言 > Java开发

java反射 String数组

2012-11-06 14:14 435 查看
public class Test
{
public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
{
  
   Method m= Test.class.getMethod("wish", String.class,String.class,String.class);
   m.invoke(null, new String[]{"1","2","3"});
//1.由于方法有多个参数,在这里面,把这三个参数用数组的形式给出
   m.invoke(null, new String("a"),new String("b"),new String("c"));
    //2.这里也可以不用数组的形式给出
}

public static void wish(String str1,String str2,String str3)
{
   System.out.println(str1);
   System.out.println(str2);
   System.out.println(str3);
}
}

但是如果我们要在把wish方法中参数改成时一个数组,该如何进行反射呢?如下:

public class Test
{
public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException
{
  
   Method m= Test.class.getMethod("wish", String[].class);
   //m.invoke(null, new String[]{"1","2","3"});这种方法是不行的
   //因为new String[]{"1","2","3"},程序会看做是wish方法有3个参数,类型都是string的,而不是把这个数组看做是一个参数
  
   m.invoke(null, (Object)new String[]{"1","2","3"});
   //1.强制转换
   m.invoke(null, new Object[]{new String[]{"1","2","3"}});
   //2.用超类的数组形式,new String[]{"1","2","3"}作为参数数组的第一个元素;
//这李说明,我们在写参数的时候,都可以写成数组的形式。
}

public static void wish(String[] strs)
{
   for(String str:strs)
   {
    System.out.println(str);
   }
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: