我正在尝试使用javax
拦截器api
编写拦截器。它必须记录传递给方法的参数以及该方法的返回值。
下面是一个记录参数的示例代码片段
for(final Object object: context.getParameters()) {
final Methods[] methods = object.getClass().getMethods();
for(final Method method: methods){ if(method.getName().startsWith("get")) {
LOGGER.info(method.getName() + ":" + method.invoke(object));
}
}
}
我在记录复杂/用户定义类型时遇到问题。
假设有一个 getter
方法,它返回 Address 类型的学生地址。我的代码不检查调用方法是否返回原始类型或用户定义类型。因此,当调用 getAddress
方法时,它会打印 Address 的哈希码。
我知道我必须通过检查 getter
方法的返回类型来编写某种递归代码。如果 getter 方法返回用户定义的类型,那么我将再次使用反射来查找所有 getter 方法,然后打印它们。
为此,我必须使用 if else 条件,如下所示
伪代码:
type =method.getReturnType().getSimpleName();
if type != string or int or char or boolean and so on
then
Call the recursive method which again does the above
我想知道是否有更好的解决方案。我该如何解决这个问题?
最佳答案
使用method.getReturnType().isPrimitive()
https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#isPrimitive%28%29
您可以找到一些其他对您有用的 is...()
方法
关于java - 如何编写一个记录参数和返回值的拦截器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33252890/