Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从作为lambda传递的函数接口对象的实例中获取参数?_Java_Lambda_Functional Interface - Fatal编程技术网

Java 如何从作为lambda传递的函数接口对象的实例中获取参数?

Java 如何从作为lambda传递的函数接口对象的实例中获取参数?,java,lambda,functional-interface,Java,Lambda,Functional Interface,这是一个JavaSpring应用程序的控制器。在executeService方法中,我传递了ServiceCaller接口的一个实例。我使用此方法从控制器调用所有服务。如果我使用intelliJ IDEA进行评估,那么我可以在executeService方法中查看dbValidationRequest/APIVidationRequest的值(如arg$2所示,请参见附图)。我需要打印这些对象以用于日志记录,我也不想使用aspect。我怎样才能做到这一点。如果intelliJ IDEA可以看到这

这是一个JavaSpring应用程序的控制器。在executeService方法中,我传递了ServiceCaller接口的一个实例。我使用此方法从控制器调用所有服务。如果我使用intelliJ IDEA进行评估,那么我可以在executeService方法中查看dbValidationRequest/APIVidationRequest的值(如arg$2所示,请参见附图)。我需要打印这些对象以用于日志记录,我也不想使用aspect。我怎样才能做到这一点。如果intelliJ IDEA可以看到这些值,为什么我不能编程?
arg$1
arg$2
可以被视为类的字段,因此它们可以通过反射获得

@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));
}


String var1=“Content Var 1”;
String var2=“Content Var 2”;
供应商字符串供应商=()->var1+var2;
字段[]declaredFields=stringSupplier.getClass().getDeclaredFields();
for(字段f:申报字段){
f、 setAccessible(true);
System.out.println(
“字段名:”+f.getName()+
,值:“+f.get(供应商)
);
}
//字段名称:arg$1,值:Content Var 1
//字段名称:arg$2,值:Content Var 2

arg$1
arg$2
可以被视为类的字段,因此它们可以通过反射获得

@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));
}


String var1=“Content Var 1”;
String var2=“Content Var 2”;
供应商字符串供应商=()->var1+var2;
字段[]declaredFields=stringSupplier.getClass().getDeclaredFields();
for(字段f:申报字段){
f、 setAccessible(true);
System.out.println(
“字段名:”+f.getName()+
,值:“+f.get(供应商)
);
}
//字段名称:arg$1,值:Content Var 1
//字段名称:arg$2,值:Content Var 2