返回方法的类型

时间:2015-03-05 11:06:13

标签: java methods

public <return type> methodName (ArrayList<ClassName> list){
    *mutate the list given as parameter*
    return list;
}

我必须插入什么作为返回类型?我已经尝试了返回类型为ArrayList<ClassName>,它告诉我该方法必须返回类型为ArrayList<ClassName>的东西,我将其作为参数开始提供给方法,所以为什么它会抱怨返回类型?我该怎么做才能绕过这个?

5 个答案:

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