gpt4 book ai didi

java泛型与 map 通配符

转载 作者:行者123 更新时间:2023-11-30 04:42:35 25 4
gpt4 key购买 nike

我正在尝试构建一个 map ,它的值可以是类人、动物或字符串的列表,然后我在最后阅读它。

我有以下问题:

Map<String,List<? extends Object>> someDataMap = 
new LinkedHashMap<String,List<? extends Object>>();

Person p = new Person();
Animals a = new Animals();

List<Person> personList = p.getPersonList();
List<Animals> animalsList = a.getAnimalsList();


List<String> someStrings = new ArrayList<String>();

someStrings.add("Employe123");
someStrings.add("Pet-Cat");


// putting lists into map
someDataMap.put("person",personList);
someDataMap.put("animals",animalsList);
someDataMap.put("listsOfData",someStrings);



// now reading the values.


Map<String,List<? extends Object>> datMap =
(Map<String,List<? extends Object>>)model.get("datMap");

List<Person> dataList = (List<Person>) datMap.get("person");

List<Animals> nodalList = (List<Animals>)datMap.get("animals");

List<String> listsOfData = (List<String>) datMap.get("listsOfData");
  1. 这种方法正确吗?我的意思是输入这些值并读取它们。
  2. 为什么不使用不带参数的 Map,为什么使用泛型和带通配符的泛型,我确实读过,但仍然不清楚

我想在没有 pojo 的情况下尝试这种方法。或者 pojo 是否必要。

请帮忙,我们将不胜感激您的帮助。

谢谢

最佳答案

如果您使用泛型,则无需显式转换从列表中读取的对象

假设Map<String, Animal> map...然后map.get("someKey");将返回Animal .

在一些更复杂的示例中也是如此。

当您将不同类型的对象放入 Map 时,就会出现问题s。听起来您需要 POJO 而不是 Map ;

class Stuff {

private List<Person> people;
private List<Animal> animals;
private List<String> data;

// Getters and setters

}

这会更干净,根据我对你的问题的理解,这似乎适合你的需求。就通过Stuff周围而不是 Map ,在这种情况下这似乎不适合您的需求。

关于java泛型与 map 通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11912090/

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