Java Isn';接受vararg对象的t函数。。。使用对象[]参数调用时参数是否有歧义?
因此,基本上从我在StackOverflow上的搜索中,这个弹出(如果错误,请纠正我):Java Isn';接受vararg对象的t函数。。。使用对象[]参数调用时参数是否有歧义?,java,variadic-functions,Java,Variadic Functions,因此,基本上从我在StackOverflow上的搜索中,这个弹出(如果错误,请纠正我): 您可以通过以下方式定义接受变量参数(在本例中为任何对象)计数的函数: public void varadric(Object... arguments) { //I'm a dummy function } 使用任意数量的参数(扩展对象)调用此方法,将在函数中得到一个参数Object[]: public static main() { varadric("STRING", new A
public void varadric(Object... arguments) {
//I'm a dummy function
}
Object[]
:
public static main() {
varadric("STRING", new ArrayList<int>());
}
public void varadric(Object... arguments) {
System.out.println("I've received "+arguments.length+" arguments of any Object subclass type.");
}
有人能告诉我这一点吗?嗯,有几个选择:
- 自己创建一个数组:
varadric(new Object[] { array })
- 声明类型为
的局部变量,并让编译器将其包装到数组中:Object
Object tmp = array; varadric(tmp);
- 以上内容的一个变体-刚才的演员阵容:
varadric((Object) array);
Object[]
的单个参数和声明为Object的varargs参数时。。。foo
,编译器不会将其包装,因为它是一个数组,因为它不需要包装。它将是一个二维数组。
此声明public void varadric(Object[]…arguments)
将接收Object[]
的数组(…
)
例如:
将打印:
hi
尝试调用varadric((对象)args)代码>以查看不同的行为。在这种情况下,它将被视为单个参数,并封装在自己的对象[]
中。也就是说,varadric
方法中的变量arguments
将是一个对象[]
,其中包含一个对象[]
,该对象包含一个字符串
和一个数组列表
。
Object tmp = array;
varadric(tmp);
varadric((Object) array);
public class Test {
public static void main(String[] args) {
Object[] o = new Object[2];
o[1] = "hi";
t(o);
}
public static void t(Object[]... arg) {
System.out.println(arg[0][1]);
}
}