Java-8:动态方法参数
这是我的groovy代码:Java-8:动态方法参数,java,java-8,Java,Java 8,这是我的groovy代码: def add(a, b) { return a+b } println add(1,2) // prints 3 println add("Suganthan","Madhavan") // prints SuganthanMadhavan 其中groovy在运行时标识方法参数。在Java-8中是否可以检测此运行时方法参数 这至少可以通过以下方式实现吗?否。Groovy是一种动态编译语言。Java是一种静态编译语言 是否至少可以通过java.lang.i
def add(a, b) {
return a+b
}
println add(1,2) // prints 3
println add("Suganthan","Madhavan") // prints SuganthanMadhavan
其中groovy在运行时标识方法参数。在Java-8
中是否可以检测此运行时方法参数
这至少可以通过以下方式实现吗?否。Groovy是一种动态编译语言。Java是一种静态编译语言 是否至少可以通过
java.lang.invoke.MethodHandle
实现这一点?否;方法将具有特定类型的参数。静态编译的。当然,您可以将对象a、对象b
作为参数编写,然后通过反射确定对象是什么,然后动态调用正确的concat函数,但这样您就可以更好地使用Groovy了。Groovy也做了类似的事情。当你说,我们可以通过reflection
来做,我希望我们也可以尝试使用MethodHandle
,这可能会带来更好的性能。这有意义吗?@Suganthan:MethodHandle
s只能是解决方案的一小部分。在重新实现Groovy的过程中,这个解决方案将成为某种东西……你想实现什么?我只是想了解,java-8是否支持动态方法参数检测。你可以编写自定义重载方法来实现这种行为,这将由java自动检测基于argumentJava 8类型调用的方法添加了一些新的类型推断——编译器可以在编译时为您推断类型——但这不会改变java是静态类型的基本原理。