java反射 String数组

来源:互联网 发布:怎么安装软件,文件 编辑:程序博客网 时间:2024/05/21 17:28
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);   }}}


原创粉丝点击