gpt4 book ai didi

java - 如何在 ResponseEntity<> 中传递未知类类型

转载 作者:行者123 更新时间:2023-12-02 11:32:53 28 4
gpt4 key购买 nike

public void etisLogAround(ProceedingJoinPoint joinPoint, EtisLog etisLog) throws Throwable {

Object[] args = joinPoint.getArgs();
MethodSignature methodSignature = (MethodSignature) joinPoint.getStaticPart().getSignature();
Method method = methodSignature.getMethod();

String[] paramNames = ((MethodSignature) joinPoint
.getSignature()).getParameterNames();

for(String paramName: paramNames) {
logger.info("paramName:" +paramName);
}


try {

Object result = joinPoint.proceed();

if(methodSignature instanceof MethodSignature) {
final Class<?>[] parameterTypes = methodSignature.getParameterTypes();
for(final Class<?> pt : parameterTypes){
logger.info("Parameter type:" + pt);
}
}

@SuppressWarnings("unchecked")
ResponseEntity<CaseOutlineHeader> returnValue = (ResponseEntity<CaseOutlineHeader>) result;




result = etisLog.trasactionDetail().toString()+" "+returnValue.getBody().getCode().toString();



} catch (IllegalArgumentException e) {
throw e;
}
}

类(class)CaseOutlineHeader是我想要改变的。 parameterTypes变量包含我想要在 ResponseEntity<> 标记内传递的类的名称。如果我想传递不同的类名称怎么办?我应该如何做到这一点才能灵活地接受不同的类名?

如果我这样做:ResponseEntity<parameterTypes> returnValue = (ResponseEntity<parameterTypes>) result;

它会提示错误parameterTypes无法解析为类型。

最佳答案

问题在于您的 AOP 方法需要将结果转换为某些内容才能获取需要记录的代码值。必须提前知道一些事情,因为您不能在注释中使用类型参数,因此不能将其传递给 AOP 方法。这意味着您在 AOP 中访问的所有方法都必须来自已知的接口(interface),如下所示:

public interface LogCodeProvider {
String getLogCode();
}

public class CaseOutlineHeader implements LogCodeProvider {
@Override
public String getLogCode() {
return "My Code";
}
}

然后在你的 AOP 方法中你可以这样做:

@SuppressWarnings("unchecked")
ResponseEntity<LogCodeProvider> returnValue = ResponseEntity<LogCodeProvider>) result;

result = etisLog.trasactionDetail().toString()+" "+returnValue.getBody().getLogCode();

在我的示例中,我实现了特殊方法 getLogCode(),它返回一个字符串,因此每个类都可以准确决定输出什么。

但是,重用结果变量来存储从 etisLog.trasactionDetail() 返回的值确实看起来很困惑。

关于java - 如何在 ResponseEntity<> 中传递未知类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49168874/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com