Лямбда и параметры методаJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Лямбда и параметры метода

Сообщение Anonymous »

Код: Выделить всё

this.appLauncherCore.forceJavaRuntimeDetection(this::onJREDetectionCompleted);
// some code here not related to the line above

private void onJREDetectionCompleted() {
this.appLauncherCore.retrieveAvailableApplications(false,
applicationGroups -> handleRefreshedAvailableApplicationsAndEnableAllMenuItems(applicationGroups),
exception -> handleError(exception));
}

Код: Выделить всё

public void forceJavaRuntimeDetection(final JavaRuntimeDetectionCompletedHandler completedHandler) {

this.executorService.submit(() -> {
this.javaRuntimeService.detectJavaRuntime();
completedHandler.onJREDetectionCompleted();
});
}

Код: Выделить всё

@FunctionalInterface
public interface JavaRuntimeDetectionCompletedHandler {

/**
* Callback informant de la fin de la détection des JRE installés sur le poste.
*/
void onJREDetectionCompleted();
}

Код: Выделить всё

public void retrieveAvailableApplications(final boolean forceRefreshCache,
final ApplicationRefreshedHandler appRefreshedHandler,
final ErrorHandler errorHandler)
Я вообще не понимаю, как работает этот код.
Насколько я понимаю, ForceJavaRuntimeDetection требует JavaRuntimeDetectionCompletedHandler > но я не понимаю, как может подойти текущий параметр. Как this::onJREDetectionCompleted может соответствовать требуемому типу? То же самое и с restartAvailableApplications.
Я знаю базовые лямбда-выражения, такие как forEach, карта и т. д. Но те, которые используются в качестве параметров?

Подробнее здесь: https://stackoverflow.com/questions/793 ... parameters
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»