Java中的动态参数问题?

来源:百度知道 编辑:UC知道 时间:2024/05/29 01:08:55
我写了一个简单的例子,有错误,不知道是什么意思?
有谁帮我看下.。

代码如下:

package pack.y2.javaee;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

class A {
public static List Test(Test ...arr){
//创建一个List集合;
List list=new ArrayList();
//循环添加把元素添加到List集合中;
for(Test element:arr){
list.add(element);
}
return list;
}

public static void main(String[] args) {
List list=A.Test(1,2,3,4,5); //这里报错The method Test(Test...) in the type A is not applicable for the arguments (int, int, int, int, int)
}

//通过迭代器迭代出List集合中的值;
for (Iterator<List> iter =list.iterator(); iter.hasNext();) {
List element=iter.next();
System.out.print(element);
}
}

你的方法的参数是 Test 类型的 , 如下
class A {
public static List Test(Test ...arr){

但在调用时传参是 int
List list=A.Test(1,2,3,4,5);

类型确实不符 , 报错很正常

解决 你传几个Test类型参数。

public static List Test(Test ...arr){
中要求的参数是Test类型,传入5个int类型当然不行啦.
可以改成传入一个数组
public static List Test(int [] arr){
然后调用的时候使用
List list=A.Test(new int[]{1,2,3,4,5});

A.Test(1,2,3,4,5);
你传入的是int型,应该传入Test型吧

还有class A 是public 的?

参数类型就没搞清楚啊!

你总不能方法传参那里定义参数类型为Test
而调用方法的时候传5个int格式的参数啊!

要么方法定义那里讲参数类型变为int
要不就传Test类型的参数!

程序的两个问题
1 Test ...arr 你没理解 这是5.0新特性的Varargs 相当于 Test[] arr
2 Test(1,2,3,4,5) 你也好好理解 你这是传的Test(int, int, int, int, int)

public static List Test(Test ...arr)这一句声明的arr是Test类型的数组。