天天看點

Java反射在Main方法的中的而應用

 我們一直在學反射,反射到底是用來幹什麼的? 我一直也很迷糊.直到今天,終于搞清楚了。 

 打個比方,在JavaWeb中,如果我們想要通過使用者送出的資料來決定具體調用哪個類來執行相應的功能。 

沒有接觸到發射之前我們可能會覺得 我們可以進行多個 switch 或者 if ,這樣不是不可以,但是 這樣程式的編制就會變得很麻煩,代碼很臃腫。

反射就很好的解決了這個問題 實時的動态的加載一個類 并執行功能。  

下面就結合一個   通過執行帶參數的 main方法 反射調用另一個main方法 

pavkage me.test ;//打包

import  java.lang.reflect.* ;//導入反射包 

public class   ReflectTest  //一個源檔案隻有一個publuc類

{  

  public staitc void main(String []args)

{    

    Method  m1=Class.forName(args[0]).getMethod("main",String[].class)  ;//獲得mian方法對應的Method類  

    m1.invoke(m1,new Object[]{new String[]{"me.test.Test"}}) ; //  這兩種方法執相同的功能

 m1.invoke(m1,(Object)new String[]{"1111","2222","3333"}) ;  //這兩種方法執相同的功能但是 

// 我們要注意 mian方法的參數 接收的時候要進行接  解包,如果第一種外面不加 Object類型的話 那麼就會報錯  ,解包完成之後 剩下的就是我們的參數了 

//第二個是吧 數組 轉換成了 Object對象 告訴 編譯器 不需要進行解包了  ,因為數組類型也是從 Object而來的 

}

class  Test

{

public static  void main(String[] args)

for(String ar:args)

System.out.println(ar) ;