当前位置: 首页 > 知识库问答 >
问题:

有可能从一个没有石膏的动物列表中得到一个狗的列表吗?

上官凯歌
2023-03-14

在我的类中有一个受保护的映射 >Animals; 。在构造函数中,我有

animals.put("dogs", new ArrayList<Animal>());
animals.put("cats", new ArrayList<Animal>());
animals.put("dogs", new ArrayList<Dog>());

有什么方法可以使用animals.put(“dogs”,new arraylist ()); 或其他选项吗?

PS:我用的是Java7

共有1个答案

包永新
2023-03-14

好吧,我问题标题的答案是否定的,但多亏了@Thomas,我找到了解决我真正问题的方法:我将Animals更改为Map > ,调整了类的其余部分,并添加了方法

@SuppressWarnings("unchecked")
public <T> List<T> getAnimals(String type) {
    Map<String, List<? extends Animal>> animals = this.animals;
    
    if (type.equals(AnimalEnum.DOG.name())) {
        List<Dog> res = (List<Dog>) animals.get(type);
        return (List<T>) res;
    }
    
    List<? extends Animal> res = animals.get(type);
    return (List<T>) res;
}

这样的强制转换是在后端完成的,我不需要在EL中强制转换。

 类似资料: