我正在尝试将ArrayList传递给Java中的方法

时间:2018-08-24 12:36:52

标签: java arraylist

我正在尝试将ArrayList传递给Java中的方法。但这给了我错误:

incompatible types: java.lang.String cannot be converted to java.util.List<java.lang.String>"      

代码如下:

class hello
{
    public static void main()
    {
        List<String> iname = new ArrayList<>();
        iname.add("1");
        iname.add("2");
        iname.add("3");

        hello obj = new hello(); 
        iname = obj.changeName(iname); //<- problem here
    }

    public String changeName(List<String> iname){
        //...
        return "some String result";
    }
}

在括号中“ iname”的该语句中,它给了我上述错误:

iname = obj.changeName(iname);

请有人帮帮我。

7 个答案:

答案 0 :(得分:4)

inameList<String>,而方法changeName的返回类型为String

如果您想返回List<String>,可以这样声明:

public List<String> changeName(List<String> iname){

    // ... you should return a List<String>  in this method
}

答案 1 :(得分:1)

您的方法

public String changeName(List<String> iname)

具有返回类型 String ,并且您尝试在操作时将该String分配给List类型的变量

iname = obj.changeName(iname);

那不可能。

答案 2 :(得分:1)

您的方法返回String,但是您试图将返回值分配给List变量,因此将其更改为

final String someString = obj.changeName(iname);

答案 3 :(得分:1)

您的方法将返回一个简单的String,该字符串将被分配给List。 将changename更改为public List<String> changeName(...)或使用String类型的新变量并分配返回值。

答案 4 :(得分:1)

您的变量iname的类型为List<String>,但是您尝试从方法String返回类型changeName(...)

您需要更新方法以返回类型List<String>

public List<String> changeName(List<String> iname){ ... }

或更改方法返回的变量,如:

String variable = obj.changeName(iname);

答案 5 :(得分:0)

问题是您尝试将changeName函数(一个String)的返回值存储在iname变量中,该变量只能容纳List<String>。这应该起作用:

String result = obj.changeName(iname);

另一种选择是更改changeName以返回List<String>,并相应地更改函数的实现。

答案 6 :(得分:0)

您的方法public String changeName(List<String> iname){}返回的是String而不是String列表。尝试使用public List<String> changeName(List<String> iname){}。方法changeName试图将整个列表放入单个String中。如果您将程序保留为原样,则必须将iname List中的单个项目返回给main方法。