Как получить аргументы из экземпляра объекта функционального интерфейса, переданного как лямбда? - PullRequest
0 голосов
/ 11 декабря 2019
@FunctionalInterface
public interface ServiceCaller {
    void callService();
}

//common method to execute any service call
public void executeService(ServiceCaller serviceCaller) {
    //do common things
    //i want to access dbValidationRequest/apiValidationRequest here for logging purpose
    try {
        serviceCaller.callService();
    } catch (Exception ex) {
        //do common things
        LogUtils.log(logger, ex);
    }
    //do common things
}

//my clients call this
public void validateFromDb(DbValidationRequest dbValidationRequest){
    commonUtils.executeService(()-> dbValidationService.validate(dbValidationRequest));
}

//my clients call this
public void validateFromApi(ApiValidationRequest apiValidationRequest){
    commonUtils.executeService(()-> apiValidationService.validate(apiValidationRequest));
}


Это контроллер Java Spring Application. Внутри метода executeService я передаю экземпляр интерфейса ServiceCaller . Я вызываю все свои услуги с контроллера, используя этот метод. если я оцениваю с помощью intelliJ IDEA, то я могу просмотреть значения dbValidationRequest / apiValidationRequest внутри метода executeService (как arg $ 2, см. прилагаемое изображение). Мне нужно распечатать эти объекты для целей регистрации, я также не хочу использовать аспект вообще. Как я могу это сделать. Если intelliJ IDEA может видеть значения, почему я не могу программно? enter image description here

...