程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 反射類的main方法-關於反射類的方法參數問題

反射類的main方法-關於反射類的方法參數問題

編輯:編程綜合問答
關於反射類的方法參數問題

1、 //public Class[] run(String str,String[] i)
@Test
public void test3() throws Exception{
Person p=new Person();
Class clazz=Class.forName("cn.itcast.reflect.Person");
Method method=clazz.getMethod("run", String.class,String[].class);
Class[] cs=(Class[])method.invoke(p, "lz",new String[]{"aa","bb","cc"});
System.out.println(cs);
}
2、//public static void main(String[] args)
@Test
public void test5() throws Exception{
Class clazz=Class.forName("cn.itcast.reflect.Person");
Method method=clazz.getMethod("main", String[].class);
method.invoke(null, new String[]{"aa","bb"});
//method.invoke(null, (Object)new String[]{"aa","bb"});
//method.invoke(null, new Object[]{new String[]{"aa","bb"}});
}
為什麼第一部分代碼在String數組傳參的時候不會報錯,而第二部分代碼String數組像第一部分傳參的時候會顯示參數個數錯誤(第二部分已修正)

最佳回答:


參考 Java反射研究(2)

注:如果參數中有數組,比如 public static void main(String[]args);

Method m = c1.getMethod("main",String[].class);
m.invoke(null,(Object)new String[]{"aa","bb"});是對的;
m.invoke(null,new String[]{"aa","bb"}); 會調用 main(String,String);函數;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved