public <return type> methodName (ArrayList<ClassName> list){
*mutate the list given as parameter*
return list;
}
我必须插入什么作为返回类型?我已经尝试了返回类型为ArrayList<ClassName>
,它告诉我该方法必须返回类型为ArrayList<ClassName>
的东西,我将其作为参数开始提供给方法,所以为什么它会抱怨返回类型?我该怎么做才能绕过这个?
答案 0 :(得分:3)
由于您正在改变列表(我假设 mutate ,您的意思是更改列表的值而NOT 将列表引用重新分配给其他对象),返回void
是安全且实际有效的,因为在Java中,对象的引用按值传递。因此,list
变量指向的列表实例所做的任何更改都将对其他方法可见。
答案 1 :(得分:3)
为获取列表的方法设计签名时,应选择返回类型,如下所示:
void
。在您的情况下,该方法应为void
:
public void methodName (ArrayList<ClassName> list){
*mutate the list given as parameter*
// do not return anything
}
答案 2 :(得分:0)
如果方法中有不同的路径,则每个路径都应返回指定的返回类型。
例如,如果你有一个return语句,在if部分中,你还应该在else部分或外部有一个return语句。
public ArrayList<ClassName> methodName(ArrayList<ClassName> list) {
if(some condition) {
........
........
return list;
}
........
........
return list;
}
除非您在此处发布变异代码,否则无法找到您的确切问题。
答案 3 :(得分:0)
如果要在代码末尾返回列表,则方法的返回类型应为Array List,因为列表具有Array List的类型, 如果没有将返回类型设置为void并且不返回任何内容。
答案 4 :(得分:0)
使用泛型:
public <T> List<T> myMethod(List<T> myList) {
return ...;
}
其中T是结果类型:
List<MyClass> myList = myMethod(myParamList);