2016-01-11 73 views
2

這是我遇到的Groovy代碼:爪哇 - 8:動態方法的參數

def add(a, b) { 
    return a+b 
} 

println add(1,2) // prints 3 

println add("Suganthan","Madhavan")​ // prints SuganthanMadhavan 

當常規標識上運行的方法參數。 Java-8這個運行時方法參數檢測是否可行?

是否至少可以通過MethodHandle

+2

你想實現什麼? – Koshinae

+0

我只是想明白,java-8支持動態方法參數檢測 –

+1

所有你能做的就是編寫你自定義的重載方法來實現這種行爲,這將會被java自動檢測到哪個方法根據參數類型 –

回答

2

編號Groovy是一種動態編譯語言。 Java是一種靜態編譯的語言。

+0

這是至少可以通過'java.lang.invoke.MethodHandle '? –

+1

否;一個方法將會有特定類型的參數。靜態編譯。當然,您可以將Object a,Object b'作爲參數,然後通過反射來確定對象是什麼,然後動態調用正確的concat函數,但是使用Groovy會更好。 Groovy做了類似的事情。 –

+0

當你說,我們可以通過'反射'來做到這一點,我希望我們可以嘗試使用'MethodHandle',這可能會提供更好的性能。那有意義嗎? –