Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-8:动态方法参数_Java_Java 8 - Fatal编程技术网

Java-8:动态方法参数

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

这是我的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.invoke.MethodHandle
实现这一点?否;方法将具有特定类型的参数。静态编译的。当然,您可以将
对象a、对象b
作为参数编写,然后通过反射确定对象是什么,然后动态调用正确的concat函数,但这样您就可以更好地使用Groovy了。Groovy也做了类似的事情。当你说,我们可以通过
reflection
来做,我希望我们也可以尝试使用
MethodHandle
,这可能会带来更好的性能。这有意义吗?@Suganthan:
MethodHandle
s只能是解决方案的一小部分。在重新实现Groovy的过程中,这个解决方案将成为某种东西……你想实现什么?我只是想了解,java-8是否支持动态方法参数检测。你可以编写自定义重载方法来实现这种行为,这将由java自动检测基于argumentJava 8类型调用的方法添加了一些新的类型推断——编译器可以在编译时为您推断类型——但这不会改变java是静态类型的基本原理。