我正在尝试将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);
请有人帮帮我。
答案 0 :(得分:4)
iname
为List<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方法。