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);
}
}
}
java反射 String数组
上一篇文章
关于java中的foreach遍历方式 下一篇文章
超全详解Java开发环境搭建
关于java中的foreach遍历方式 下一篇文章
超全详解Java开发环境搭建