这可能是一个愚蠢的问题。我相信它很清楚我想要实现的目标,但我无法想到它的语法。假设我有:
public void foo(int[] v){
}
public static void main(String args[]){
foo({1, 2, 3});
}
我可以在不声明新阵列的情况下调用foo吗?如果是,怎么样?
答案 0 :(得分:4)
您的代码没有按照您编写的方式进行编译。但这会,也许是你想要的:
public void foo(int... v) {
// ...
}
public static void main(String args[]) {
foo(1, 2, 3);
}
此处,传递给foo
的值将自动转换为数组。 v
的值实际上是int[]
。
或者,保留foo
的原始签名,
你可以这样写:
public void foo(int[] v) {
// ...
}
public static void main(String args[]) {
int[] params = {1, 2, 3};
foo(params);
}
在你写的时候,不可能将这两行合并到foo({1, 2, 3})
中。
或者你可以这样写:
public static void main(String args[]) {
foo(new int[]{1, 2, 3});
}
我在第一个版本中编写的int...
语法称为" varargs",
如果你想了解更多相关信息。
由于您是初学者,我不建议您使用它,
因为你可能会遇到一些陷阱,
它可能比有用更令人困惑。
暂时坚持第二或第三版。