Выражение lamba автоматически создает новый объект для его параметров входа? - PullRequest
0 голосов
/ 11 июня 2018

Я новичок в функциональном программировании, пока я понял, как его использовать, анонимная функция ecc ...

Я видел много примеров кода, где объект, необходимый в качестве параметра в моем выражении lamba, на самом деле нене существует в тот момент (он не истансируется).

Например, это:

myClass.myMethod(c -> {my overridden code});

то же, что и это

myClass.myMethod(new String() -> {my overridden code});

, учитывая, чтоc не объявлен в моем коде, а myMethod правильно реализует функциональный интерфейс, абстрактный метод которого требует String?

РЕДАКТИРОВАТЬ :

У меня возникли некоторые проблемы с этим вопросом: Изображение JavaFX ComboBox С этой частью кода:

comboBox.setCellFactory(c -> new StatusListCell());

Я не могу понять, откуда взята буква c, она вообще не объявлена, поэтому мне было интересно, могут ли выражения lamba создавать новые объекты автоматически.

1 Ответ

0 голосов
/ 11 июня 2018

c на самом деле является только заполнителем, как параметр в методе (который здесь не отличается от работы лямбды).

myClass.myMethod(c -> {my overridden code});

- эквивалент следующего

myClass.myMethod(new Consumer<String>(){
    @Override
    public void accept(String c) {
        {my overridden code}
    }
}

Итак, ответ на ваш вопрос таков: нет. Лямбда представляет метод, функцию, но сама по себе не является исполняемым элементом, ее нужно вызывать с внешними параметрами.

...