我有一個不同類的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