Ошибка компиляции при использовании ссылки на метод в Java 8 - PullRequest
0 голосов
/ 19 октября 2018

Я не понимаю причину возникновения ошибки компиляции для приведенной ниже программы.Куда я иду не так?Я хочу напечатать значение строки как вывод, используя ссылку на метод.

public class ConsumerDemo{
    public static void main(String[] args) {
        test("hello", (str)-> str::toUpperCase);
    }

    public static void test(String str, Consumer<String> consumer) {
        consumer.accept(str);

    }
 }

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

вы не можете комбинировать лямбда-синтаксис и синтаксис ссылки на метод как таковой.

Вы либо ищете:

test("hello", String::toUpperCase);

или:

test("hello", s -> s.toUpperCase());

, но этотогда означает, что результат String::toUpperCase / s -> s.toUpperCase() игнорируется , следовательно, , вам нужно выполнить что-то более полезное.например:

test("hello", s -> System.out.println(s.toUpperCase()));
0 голосов
/ 19 октября 2018
test("hello", String::toUpperCase)

должен иметь правильный синтаксис.

Чтобы напечатать верхний регистр ввода, вы можете использовать:

String str = "hello"; // any input value
test(str.toUpperCase(), System.out::println);
...