给出如下方法:
public void blit(int[] pos) {
do stuff..
}
有没有办法在没有先声明它们的情况下传入参数列表?
例如,在Python中,我可以做类似的事情:
def blit(pos):
stuf...
blit([20,50])
我可以简单地传入一个专门在参数列表中创建的列表。要在Java中执行等效操作,我似乎必须首先声明数组,然后才能将它传递给方法。
int[] coordinates = {20,50};
blit(coordinates);
这不是什么大不了的事,但如果我可以做一些像
这样的话,它会很方便blit({20,50});
但是,当然,这不起作用。我也尝试在调用中创建数组,如
blit(new int[] = {20,40});
但是,再一次,没有运气。所以,也许是一个可怕的问题,但有没有办法将参数列表传递给一个模仿部分Python行为的方法?
答案 0 :(得分:7)
你可以用两种方式做到:
blit(new int[] {20,40});
或者用varargs声明你的方法:
public void blit(int... pos) {}
并将其称为:
blit(20, 40);
答案 1 :(得分:2)
你很亲密:
blit(new int[] {20,40});
答案 2 :(得分:2)
我认为你的意思是匿名数组创建:
blit(new int[] {20, 40});
我是对的吗?
答案 3 :(得分:1)
是的,使用可变数量的参数语法:
public void blit(Object ... args)
{
}
blit(10, 20, 30);
如果你想传递齐次参数,那么首选List<type>
。
答案 4 :(得分:0)
使用以下语法:
blit(new int[]{20, 40});
答案 5 :(得分:0)
您可以执行类似
的操作 blit(new int[]{5,10});
答案 6 :(得分:0)
为什么不使用List
..............
blit(new List<Integer>());
答案 7 :(得分:0)
您可以将 java.util.Map<String,Object>
作为方法的唯一参数。 (使用key =参数的名称)
java.util.Map<String,Object> arguments=new HashMap<String,Object>();
List<Integer> positions=new ArrayList<Integer>();
positions.add(1);
positions.add(2);
arguments.put("pos",positions);
myfunction_call(arguments);
答案 8 :(得分:0)
将其称为blit(new int[]{20,40});
对于参考类型,您可以声明方法whis varargs:
public void blit(Integer... pos) {
//do stuff..
}
// and the array creation code will be inserted by the compiler:
blit(20,40);