我正在尝试将String参数传递给ArrayList参数,如下所示:
Class A {
public void testA (ArrayList arrayInput) {
// Implement function
System.out.println("In testA function");
}
String a = "new";
testA(a);
}
我这样做是因为我想使用相同的函数来传递String值和ArrayList值。有工作吗?
谢谢, 索尼
答案 0 :(得分:4)
// Option 1: print in String - preferred
public void testA(ArrayList<String> list) {
for(String str : list) testA(str);
}
public void testA(String s) {
System.out.println(s);
}
// Option2: print in List - not so preferred
public void testA(ArrayList<String> list) {
for(String str : list) System.out.println(str);
}
public void testA(String s) {
ArrayList<String> list = new ArrayList<String>();
list.add(s);
testA(list);
}
答案 1 :(得分:2)
如果要使用相同的函数传递两种类型,则必须重载函数:
Class A {
public void testA (ArrayList arrayInput) {
// Implement function
System.out.println("In testA function");
}
public void testA (String stringInput) {
// Implement function
System.out.println("In testA function. For String!");
}
String a = "new";
testA(a);
}
或者你可以编写一个泛型函数:
public void testA<T>(T input){...}
答案 2 :(得分:1)
您可以像其他回答一样建议重写方法。
或者,您只需将String
对象包裹在List
中,然后将其传递给testA
,如下所示:
public static <A> void testA(List<A> list) {
// some code that works over list
System.out.println("In testA method");
}
String a = "new";
testA(Arrays.asList(a));