gpt4 book ai didi

java - 无法将 HashMap 类型转换为 HashMap 本身且内部包含 HashMap 对象的对象

转载 作者:行者123 更新时间:2023-12-01 12:59:28 33 4
gpt4 key购买 nike

我必须修改当前代码以适应 Spring MVC。我有

HashMap hashmap = new HashMap();
request.setAttribute("dslrErrors", hashmap);

现在我修改了将 HashMap 传递回 Controller (方法中)的方法:

showHTML响应方法:

@RequestMapping(value = "/s")
public String showHTMLResponse(@ModelAttribute("dslrs") DSLR dslrs[],
@ModelAttribute("dslr") DSLR dslr,
@ModelAttribute("dslrErrors") HashMap<?> dslrErrors,
@ModelAttribute ("dslrform") DSLRForm dslrForm,
@RequestParam("id") String paramId,
@RequestParam("action") String paramAction,
Model model){
// stuff
...
HashMap<String,Object> dslrHashMap = getDSLRById(paramId);
dslr = (DSLR) dslrHashMap.get("dslr");
dslrForm = (DSLRForm)dslrHashMap.get("dslrForm");
dslrErrors = (HashMap<>)dslrHashMap.get("dslrErrors");
...
}

getDSLRById 方法:

    ...
HashMap<String,Object> map = new HashMap<String, Object>();
map.put("dslr", dslr);
map.put("dslrform", dslrForm);
map.put("dslrErrors", new HashMap());

return map;
...

问题:

这一行: dslrErrors = (HashMap<>)dslrHashMap.get("dslrErrors");

还有这个:

@ModelAttribute("dslrErrors") HashMap<?> dslrErrors

如何正确转换 HashMap 元素/对象并分配给 Model所以View能够访问它吗?

最佳答案

以下行无法编译,因为 HashMap 采用两个泛型参数(如 Tom G 在评论中所述)

@ModelAttribute("dslrErrors") HashMap<?> dslrErrors;

简单地说,我希望得到以下内容:

@ModelAttribute("dslrErrors") HashMap<?,?> dslrErrors;

第一个参数是键,第二个参数是值。

上述内容在实例化情况下的示例:

HashMap<?,?> myMap = new HashMap<String, String>();

最后还要补充一点;除非您需要 hashmap 特定的方法,否则最好使用接口(interface)作为最佳实践,因为它可以更轻松地切换实现而无需更改大量代码

Map<?,?> myMap = new HashMap<String, String>();
@ModelAttribute("dslrErrors") Map<?,?> dslrErrors;

至于另一行代码;

dslrErrors = (HashMap<>)dslrHashMap.get("dslrErrors");

我能想到两种方法(目前我面前没有编辑来验证:

    dslrErrors = (HashMap)dslrHashMap.get("dslrErrors"); //no diamond <> operator in the cast
dslrErrors = (HashMap<Object, Object>)dslrHashMap.get("dslrErrors"); //note how we specify the type in the diamond operator here

希望这对您有帮助。如果还有任何问题,请随时询问。

有关接口(interface)编程的一些来源: Program to an interface

关于java - 无法将 HashMap 类型转换为 HashMap 本身且内部包含 HashMap 对象的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23633991/

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