Java 是否可以在不事先声明的情况下将参数列表传递给方法?
给定一种方法,例如:Java 是否可以在不事先声明的情况下将参数列表传递给方法?,java,Java,给定一种方法,例如: public void blit(int[] pos) { do stuff.. } 有没有一种方法可以在不首先声明参数的情况下传递参数列表 例如,在Python中,我可以执行以下操作: def blit(pos): stuf... blit([20,50]) 我可以简单地传入一个在参数列表中专门创建的列表。要在Java中实现等效,似乎必须首先声明数组,然后才能将其传递给方法 int[] coordinates = {20,50}; blit(coordi
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行为的方法呢 你很接近:
blit(new int[] {20,40});
你很接近:
blit(new int[] {20,40});
我想你指的是匿名数组创建:
blit(new int[] {20, 40});
我说的对吗?我想你指的是匿名数组创建:
blit(new int[] {20, 40});
我说的对吗?是,使用可变参数数语法:
public void blit(Object ... args)
{
}
blit(10, 20, 30);
如果要传递同构参数,则应首选列表。是,使用可变参数数语法:
public void blit(Object ... args)
{
}
blit(10, 20, 30);
如果要传递同构参数,则应首选列表。使用以下语法:
blit(new int[]{20, 40});
使用以下语法:
blit(new int[]{20, 40});
你可以这样做
blit(new int[]{5,10});
你可以这样做
blit(new int[]{5,10});
您可以通过两种方式来实现:
blit(new int[] {20,40});
或者使用varargs声明您的方法:
public void blit(int... pos) {}
这样称呼它:
blit(20, 40);
您可以通过两种方式来实现:
blit(new int[] {20,40});
或者使用varargs声明您的方法:
public void blit(int... pos) {}
这样称呼它:
blit(20, 40);
为什么不使用列表
blitnew列表 为什么不使用列表
blitnew列表 可以将java.util.Map作为方法的唯一参数。With 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);
可以将java.util.Map作为方法的唯一参数。With 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);
称之为blitnewint[]{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);
称之为blitnewint[]{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);