gpt4 book ai didi

java - 收集 Object[] 数组中的所有方法参数

转载 作者:行者123 更新时间:2023-12-04 05:37:58 28 4
gpt4 key购买 nike

我正在考虑在 Object[] 数组中收集泛型方法的所有方法参数以进行记录。我知道使用方面可以更好地实现这一点,但是我不允许使用它,并且如果可能的话我正在寻找一种基于纯反射的方法

为了澄清,
假设一个方法调用

class A {
foo(int a, Object b){

}
}

给定 A 的对象实例,是否可以在 'foo' 方法中动态确定传递的参数?我似乎无法在 java.lang.reflect 或注释中找到任何 API 来确定这一点。

编辑 :我目前使用下面的实现进行日志记录。然而,在调用之前收集数组中的所有方法参数是很乏味的,并且想知道是否可以以某种方式推断出来。我正在寻找除方面之外的任何建议/图书馆
private static final ConcurrentMap<Class, Method[]> METHODS = new ConcurrentHashMap<Class, Method[]>();
protected void log(Class clazz, String methodName, Object[] args) {
Method[] methods = METHODS.get(clazz);
if (methods==null){
methods = clazz.getDeclaredMethods();
METHODS.put(clazz, methods);
}

for(Method method:methods){
if (method.getName().equals(methodName)){
StringBuilder builder = new StringBuilder(methodName + '(');
int i=0;
for (Class type:method.getParameterTypes()){
builder.append(type.getSimpleName())
.append(" [")
.append(args[i++])
.append("] ,");
}
String str = StringUtils.removeEnd(builder.toString(), ",") + ")";
LoggerFactory.getLogger(clazz).info(str);
}
}
}

最佳答案

你可以通过这个获取参数类

Class  aClass = ...//obtain class object
Method method = aClass.getMethod("doSomething", null)
Class[] parameterTypes = method.getParameterTypes();

关于java - 收集 Object[] 数组中的所有方法参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11681831/

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