Нет прямого способа сделать то, что вы хотите, так как thenApply
возвращает новый CompletableFuture
объект.
Однако, если вам действительно нужно это сделать, вы можете попробовать переопределить сам класс CompletableFuture
.
Позвольте мне объяснить! Метод
CompletableFuture.thenApply()
далее вызывает закрытый метод uniApplyStage
класса CompletableFuture
, в котором создается экземпляр new CompletableFuture()
для возврата. (Я проверил исходный код Java, чтобы проверить это.)
Вы не можете переопределить этот метод, так как это частный метод. Однако, если вы;
- Декомпилируйте класс
CompletableFuture
- Скопируйте код.
- Внесите изменения в метод
uniApplyStage
в @Override
the * Метод 1024 * во время new CompletableFuture<V>()
создания экземпляра. - Затем во время выполнения выполните шаги, упомянутые в { ссылка }, чтобы перезагрузить ваш класс во время выполнения с помощью "Custom ClassLoader".
Теоретически, вы должны быть в состоянии сделать все это.
Но, конечно, вопрос остается. Как отчаянно ты хочешь сделать это? : D
По моему честному мнению, считаю этот ответ своего рода последним средством.