gpt4 book ai didi

java - 如何避免使用 @SuppressWarnings 来转换列表

转载 作者:行者123 更新时间:2023-11-29 04:05:25 27 4
gpt4 key购买 nike

我有下面的代码转换一个 List 对象类型,我想避免使用 @SuppressWarnings("unchecked")注释,但我不想在 IDE 设置中将其关闭,因为我意识到它的重要性。

我将如何重写下面的内容以便我可以删除注释并且 IDE 不会突出显示未经检查的转换警告?

我尝试更换 CaseData?元素类型,但我需要说明 CaseData用于类(class)后面的代码。

我看过一些常见的问题,例如: What is SuppressWarnings ("unchecked") in Java?

@Override
protected void buildExcelDocument(Map<String, Object> model, Workbook workbook, HttpServletRequest request,
HttpServletResponse response) throws Exception {

@SuppressWarnings("unchecked")
List<CaseData> cases = (List<CaseData>) model.get("cases");

最佳答案

没有警告就无法做到这一点。转换为泛型类型在运行时根本无法检查,编译器会通知您。我认为抑制该警告通常是完全合法的,所以我认为您真的需要其他解决方案。

但如果可以,请关注@KarolDowbecki 的 suggestion ,我认为这是最好的解决方案。

如果您无论如何都想避免 SuppressWarning,以下是一些解决方法:

当您使用 CaseData 元素时执行转换,而不是转换整个列表:

List<?> cases = (List<?>) model.get("cases");

// No warning here, since we're casting the element instead of the list
CaseData data = (CaseData) cases.get(0);

复制 cases 列表并事先检查所有元素:

// No warning here, since we're casting to List<?>
List<CaseData> cases = ((List<?>) model.get("cases")).stream()
// No warning here, since we're casting the elements instead of the list
.map(d -> (CaseData) d).collect(toList());

关于java - 如何避免使用 @SuppressWarnings 来转换列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59142816/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com