Я пытаюсь передать ArrayList методу на Java

Я пытаюсь передать 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);

Кто-нибудь, пожалуйста, помогите мне.

Метод возвращает String, имя типа List of String. Коробка яиц - это не одно яйцо. Вот и все.

GhostCat 24.08.2018 14:40

Бесплатная репутация !!! Пригласите своих друзей, нам нужно больше ответов!

Pshemo 24.08.2018 14:45

@Pshemo См. meta.stackoverflow.com/questions/373011/… ... потерянный в действии: серьезная причина.

GhostCat 24.08.2018 14:48
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
140
7

Ответы 7

Проблема в том, что вы пытаетесь сохранить возврат вашей функции 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 обратно в основной метод.

Другие вопросы по теме