【发布时间】:2019-07-09 05:25:50
【问题描述】:
在使用反射调用的时候,有什么办法可以区分这两种方法吗?
public void method(Object[] args) {}
public void method(Object... args) {}
【问题讨论】:
-
您的问题尚无定论,因为此代码甚至无法编译。它失败并显示错误消息
error: cannot declare both method(Object...) and method(Object[])。 See this demo. -
显然这段代码无法编译。问题是如何区分该方法是否以一种方式或另一种方式声明
-
基于无法编译,我假设两个签名在运行时会显示相同,即
Object[]。但是,为什么您需要知道其中的区别? -
因为我收到了一个对象数组,并且我想在调用可以使用接收到的参数调用它的方法之前知道。如果我有一个 Object[] 参数,我只能有 1 个参数;否则,我可以有 3 个甚至 0 个参数。
-
不,你不能。这就是人们一次又一次地试图告诉你的。运行时没有可变参数。如果你打算使用反射调用可变参数方法,你必须传递一个数组!
标签: java reflection