На нестатический метод Map.merge .. нельзя ссылаться из статического контекста. - PullRequest
0 голосов
/ 21 декабря 2018

У меня есть следующий код:

    public List<String> myMethod(){
    ..
    ...... 
    Map<String, Module> m1 = new HashMap<>();
    Map<String, Module> m2= new HashMap<>();
    Set<Map.Entry<String, Module>> entries = m2.entrySet();
    for( Map.Entry<String, Module>  e : entries){
        m1.merge(e.getKey(),e.getValue(),String::concat);
        }
    .....
   }

Я получаю строку ошибки здесь String :: concat с сообщением На статический контекст нельзя ссылаться на нестатический метод

есть идеи, как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Значение вашей карты относится к типу Модуль.String :: concat возвращает String, ваш третий аргумент должен вернуть вам «объединенный» модуль вместо String :: concat.

0 голосов
/ 21 декабря 2018

Map::merge принимает BiFunction в качестве последнего аргумента для объединения значений, где есть столкновение клавиш.

Вам нужно будет найти способ слияния двух, заданных Module's, а не String.

другими словами, это:

 m1.merge(e.getKey(),e.getValue(),(Module l, Module r) -> ...);

С другой стороны, вы можете упростить свой код до:

m2.forEach((k, v) -> m1.merge(k, v, (Module l, Module r) -> ...));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...