我有一个不同类别的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);
}

最佳答案

这应该工作

  DataAssessment assessment = (DataAssessment) assessmentType.get(i).newInstance();

09-26 21:24