gpt4 book ai didi

java - 将字段类型传递为 Class

转载 作者:行者123 更新时间:2023-12-01 19:44:37 24 4
gpt4 key购买 nike

我有以下代码。

public <T> List<Object> types(Class<T> clazz) {
Field[] fields = clazz.getDeclaredFields();
List<Object> types = Arrays.stream(fields)
.map(Field::getType)
.collect(Collectors.toList());
return types;
}

我正在努力思考如何稍后将字段类型作为类对象传递。我将在反射中使用它们(clazz 这里是类Contact):

for (Object type : name(clazz)) {
Method method = obj.getClass().getDeclaredMethod("myMethod", type.getClass());
}

假设 typeString,如果我将其打印为:System.out.println(type);输出是: class java.lang.String 但如果我将其打印为:System.out.println(type.getClass();输出为:class java.lang.Class。因此,如果我将其作为 type.getClass() 传递,反射会提示:

java.lang.NoSuchMethodException: Contact.myMethod(java.lang.Class)

请帮忙。谢谢。

最佳答案

Field::getType 返回一个类。为什么将其存储到收集流中的Object 中?只需将它们收集到类列表中即可。
除此之外,参数化类型方法作用域在这里是无能为力的。您不想推断任何类型。

这将给出:

public List<Class<?>> types(Class<?> clazz) {
Field[] fields = clazz.getDeclaredFields();
List<Class<?>> types = Arrays.stream(fields)
.map(Field::getType)
.collect(Collectors.toList());
return types;
}

请注意,您收集了声明的字段,然后您似乎想在通过反射检索的方法中使用它们。不太清楚什么。

关于java - 将字段类型传递为 Class<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53882403/

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