2016-01-11 74 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',这可能会提供更好的性能。那有意义吗? –