gpt4 book ai didi

java - 如何在 Java 中将 Field 转换为 Set 类?

转载 作者:行者123 更新时间:2023-11-30 07:14:59 24 4
gpt4 key购买 nike

如果一个字段是 Set<String>如何从 Set 中确定泛型的类型(在本例中为 String)?

我有这个确定泛型类型的方法:

private boolean isSetTypeOf( Set<?> set, Class<?> clazz )
{
for ( Object object : set )
{
if ( object.getClass().equals( clazz ) )
{
return true;
}
}
return false;
}

但我无法将 Field 转换为 Set,因此无法使用此方法。

Field field = getTheField();

if ( ReflectionUtils.isType( field, Set.class )
{
// Error
if ( isSetTypeOf( field, clazz ) )
{
// do something
}
}

基本上我知道字段类型是一个集合,现在我需要知道该集合包含的对象类型,然后我才会使用该字段。

最佳答案

假设您有合适的 Field与您的 Set 相对应的类型在你的类中的类型字段,你可以使用下面的代码来找出参数化类型的类型:

Type type = field.getGenericType();   // Get the generic type of the Field, 

if (type instanceof ParameterizedType) {
System.out.println("Parameterized type for : " + type);

ParameterizedType pType = (ParameterizedType) type;
Type[] types = pType.getActualTypeArguments();

for (Type aType: types) {
System.out.println(aType);
}
}

对于 Set<String>类型字段,这将输出:

Parameterized type for : java.util.Set<java.lang.String>
class java.lang.String

使用 isSetTypeOf方法不会给你参数化类型,而是存储在 Set 中的元素的实际类型。 .

关于java - 如何在 Java 中将 Field 转换为 Set 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18159747/

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