Я пытаюсь передать 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);
Кто-нибудь, пожалуйста, помогите мне.
Бесплатная репутация !!! Пригласите своих друзей, нам нужно больше ответов!
@Pshemo См. meta.stackoverflow.com/questions/373011/… ... потерянный в действии: серьезная причина.




Проблема в том, что вы пытаетесь сохранить возврат вашей функции changeName (String) в переменной iname, которая может содержать только List<String>. Это должно работать:
String result = obj.changeName(iname);
Альтернативой может быть изменение changeName для возврата List<String> и соответствующее изменение реализации функции.
iname - это List<String>, а тип возвращаемого значения метода changeName - String.
Если вы хотите вернуть List<String>, вы можете объявить это так:
public List<String> changeName(List<String> iname){
// ... you should return a List<String> in this method
}
Ваш метод
public String changeName(List<String> iname)
имеет возвращаемый тип Нить, и вы пытаетесь назначить эту строку переменной типа List, когда вы это делаете
iname = obj.changeName(iname);
Это невозможно.
Ваш метод возвращает String, но вы пытаетесь присвоить возвращаемое значение переменной List, поэтому измените его на
final String someString = obj.changeName(iname);
Ваш метод возвращает простую строку, которая будет назначена списку.
Измените changename на public List<String> changeName(...) или используйте новую переменную типа String и присвойте возвращаемое значение.
Ваша переменная iname имеет тип List<String>, но вы пытаетесь вернуть тип String из вашего метода changeName(...).
Вам нужно либо обновить метод, чтобы вернуть тип List<String>:
public List<String> changeName(List<String> iname){ ... }
Или измените переменную, в которую возвращается метод, например:
String variable = obj.changeName(iname);
Ваш метод public String changeName(List<String> iname){} возвращает строку вместо списка строк. Вместо этого попробуйте public List<String> changeName(List<String> iname){}. Метод changeName пытается уместить весь список в одну строку. Если вы оставили свою программу в неизменном виде, вам придется вернуть один элемент из вашего iname List обратно в основной метод.
Метод возвращает
String, имя типаList of String. Коробка яиц - это не одно яйцо. Вот и все.