【问题标题】:how can I append two list with different type? [duplicate]如何附加两个不同类型的列表? [复制]
【发布时间】:2018-05-23 05:54:10
【问题描述】:
List<ExpenseDetailsWrapper> expenseDataList = reimbursementLocalService
                        .getAllExpenseByReimbursementId(reimbursementId);

                long fileEntryId = 0;
                String previewURL = StringPool.BLANK;
                List<String> billUrlData = new ArrayList<String>();
                List<String> finalMerge = new ArrayList<String>();
                try { 
                    for (int i = 0; i < expenseDataList.size(); i++) {
                         fileEntryId = expenseDataList.get(i).getFileEntryId();
                         if (fileEntryId > 0) {
                            FileEntry fileEntry = DLAppLocalServiceUtil.getFileEntry(fileEntryId);
                            previewURL = DLUtil.getPreviewURL(fileEntry, fileEntry.getFileVersion(), themeDisplay, StringPool.BLANK);
                        }           
                         renderRequest.setAttribute("previewUrl", previewURL);
                         finalMerge.add(billUrlData);
                         finalMerge.add(expenseDataList);//**Error is here**The method addAll(Collection<? extends String>) in the type List<String> is not applicable for the arguments (List<ExpenseDetailsWrapper>)
                         LOG.info("File Entries"+fileEntryId);
                    }
                    LOG.info(billUrlData);
                    renderRequest.setAttribute("previewUrl", billUrlData);
                    renderRequest.setAttribute("expenseDataList", expenseDataList);
                } catch (Exception e) {
                    e.printStackTrace();
                }

我有一个带有 POJO 的列表和另一个带有 String 的列表。但是当我尝试将这两个列表添加到一个列表中时,它给了我错误 我可以附加两个不同类型的列表吗??

【问题讨论】:

  • 将两种不同的类型添加到通用列表中通常是不好的做法。最大的原因:即使你被允许做你正在做的事情,它也不是 type safe,因为当你浏览那个列表时,你不知道你是否得到了一个字符串或细节包装。

标签: java list collections java-8


【解决方案1】:

是的,您可以使用 List&lt;Object&gt; expenseDataList,但在检索时您需要小心并投射它。

for(Object obj : expenseDataList)
{
  if(obj instanceof YourPOJO)
//take action
}

【讨论】:

  • 我们把投反对票的原因放在评论框上
  • 我试过了,但我认为这不可行。感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 1970-01-01
  • 2018-01-08
相关资源
最近更新 更多