2015-07-13 117 views
0

有沒有什麼方法可以檢索Map中的方法中的方法的所有參數/參數,其中鍵爲參數名稱和值作爲參數值?Java中方法參數的映射

說,我有一個方法與下面的簽名:

public void do(String arg1, int arg2, String arg3, Double arg4, MyCustomObj arg5) 

我要實現的是這樣的:

public void do(String arg1, int arg2, String arg3, Double arg4, MyCustomObj arg5) {
Map<String, Object> argsMap = <what-goes-here>; logger.info("do ENTRY: "+argsMap); }

PS:我不是在尋找基於AOP的解決方案。我想要一些可以在方法本身內使用的東西。

更新:這個問題不是關於如何通過反射來獲取值。在重複之前請重新閱讀。

+1

你的意思是,該參數的_current_方法,從_inside_該方法? –

+0

是的!不知何故無法更新問題。 – Mubin

+2

看看:[如何通過Java中的反射來獲取方法參數的值?](http://stackoverflow.com/questions/7230326/how-to-get-the-value-of-a-method -argument-via-reflection-in-java) –

回答

0

這似乎是一個候選人AOPwith spring你可以在建議之前申請,創建你自己的地圖並打印它。

+1

你仍然需要手動創建地圖。 – biziclop

+0

是的,但它會在建議內,你只需要定義一次就好了:'@Before(..)..mymethod(..){創建args的映射並將其發送到控制檯,然後繼續正常的例程? – SMA

+0

我可能是錯的,但我認爲這個問題是關於如何「神奇」地獲取一個方法的參數。 – biziclop

0

您可以使用Varargs

public void function(String... parameters) { 
    for (int i = 0; i < parameters.length; i += 2) { 
     System.out.println(parameters[i] + " " + parameters[i + 1]); 
    } 
}