是否可以在不事先声明方法的情况下将参数列表传递给方法?

时间:2012-09-06 17:33:06

标签: java

给出如下方法:

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行为的方法?

9 个答案:

答案 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);