gpt4 book ai didi

java - 基于集合的泛型和反射

转载 作者:行者123 更新时间:2023-12-01 17:23:04 25 4
gpt4 key购买 nike

这就是我的问题。我有两个类...SingularEntity 和 ListEntity。顾名思义,SingularEntity 代表一个实体,而 ListEntity 代表一个单一实体列表......该列表显然比 SingularEntity 本身具有更多通用属性。所以我有一个 AuthorizationEntity 扩展了 SingularEntity 类

public class SingularEntity{
}

public class AuthorizationEntity extends SingularEntity{

}

现在我有一个 ListEntity,它代表任何单一实体的列表

public class ListEntity{

public List<? extends SingularEntity> data;

public ListEntity(List<? extends SingularEntity> data){
this.data = data;
}
}

现在,我想始终使用反射来填充列表......并且我总是在 results.add 方法中遇到错误。表示方法 List.add(CAP#1) 不适用。非常乐意提供任何帮助

public List<? extends SingularEntity> build() {
List<? extends SingularEntity> results = new ArrayList<SingularEntity>();
try {

Constructor javaBeanClassConstructor =
(Constructor) DTOClass.getDeclaredConstructors()[0];
Class<?>[] constructorParameterTypes =
javaBeanClassConstructor.getParameterTypes();


for (Object[] columns : lstInput) {
Object[] constructorArgs = new Object[constructorParameterTypes.length];
for (int j = 0; j < columns.length; j++) {
Object columnValue = columns[j];
Class<?> parameterType = constructorParameterTypes[j];
// convert the column value to the correct type--if possible
constructorArgs[j] = ConversionManager.getDefaultManager()
.convertObject(columnValue, parameterType);
}

*results.add(javaBeanClassConstructor.newInstance(constructorArgs));*
}
}catch(Exception ex){
}
return results;
}

最佳答案

您应该参数化您的 ListEntity 类

public class ListEntity<T extends SingularEntity>{

public List<T> data;

public ListEntity(List<T> data){
this.data = data;
}
}

关于java - 基于集合的泛型和反射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174973/

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