3 回答

TA貢獻1875條經驗 獲得超3個贊
如果您使用 java 8,則應該嘗試使用流 api。
考慮到 DTO 的構造函數有一個String參數。
List<Object[]> listChild = query.list();
List<ChildrenDTO> children = listChild.stream().map(x -> new ChildrenDTO(x[0].toString())).collect(Collectors.toList());

TA貢獻1831條經驗 獲得超10個贊
因此,首先,您要遍歷包含對象數組的 List。
因此,要獲取每個單獨的對象,您需要有一個嵌套循環,例如:
for (Object[] org : listOrg) {
for (int i = 0; i < org.length; i++) {
if (org[i] instanceof ChildrenDTO) {
listOfDTO.add((ChildrenDTO) org[i]);
}
}
}
我不是 100% 確定您是否可以將對象強制轉換為 ChildrenDTO 對象,但如果不能,您可以只獲取對象值并創建一個新的 ChildrenDTO 實例,也許是一個構造函數來獲取對象值?

TA貢獻1836條經驗 獲得超4個贊
您可以使用Java 8 流 API:
List<Object[]> listChild = ...List<ChildrenDTO> childrenDtos = listChild.stream() .flatMap(Arrays::stream) .filter(object -> Objects.equals(object.getClass(),ChildrenDTO.class)) //.filter(object -> object instanceof ChildrenDTO) //instead of Objects.equals(class, class), if required .map(object -> (ChildrenDTO)object) .collect(Collectors.toList());
添加回答
舉報