我有一个不同类的HashMap
,它具有与每个键相关的不同属性。我正在使用Java 8的stream()
API来合并基于属性的列表。我的目标是迭代综合列表,根据类创建一个对象,并使用该接口为每个对象调用方法。使用相同的实现从数组列表中创建对象
我在合并后创建这些对象时遇到问题。这里是我的代码:
private static final HashMap<Class<? extends DataAssessment>, Integer> TYPE_DATA_ASSESSMENT = new HashMap<Class<? extends DataAssessment>, Integer>() {{
put(AsertUsed.class, Definitions.DATA_TYPES.ELF);
put(ShellDeleted.class, Definitions.DATA_TYPES.ELF);
put(ShellUsed.class, Definitions.DATA_TYPES.ELF);
}};
在我的switch语句:
List<Class<?>> assessmentType = TYPE_DATA_ASSESSMENT.entrySet()
.stream()
.filter(item -> item.equals(Definitions.DATA_TYPES.ELF))
.map(Map.Entry::getKey)
.collect(Collectors.toList());
for(int i = 0; i < assessmentType.size(); i++)
{
// This is where I am stuck
//
DataAssessment assessment = new (DataAssessment) assessmentType.get(i);
}
你可能想'Class.newInstance()' – 2017-07-24 19:46:32
什么对象创建的一部分失败的原因?它看起来像1)你可能有一个不必要的'new'和2)你的'for'循环只是一遍又一遍覆盖同一个'DataAssessment'变量,因此不会保存你创建的对象 – MyStackRunnethOver
调用构造函数参数与反射https://stackoverflow.com/questions/3574065/instantiate-a-class-object-with-constructor-that-accepts-a-string-parameter – lucasvw