Java如何将值为泛型的LinkedHashMap作为参数创建通用方法
问题解答
完全可以实现,你原有写法的核心逻辑是对的,只需要修正泛型声明的语法错误即可。
首先你原来的方法签名里LinkedHashMap<String, <T>>多了一层多余的尖括号,把内层的尖括号删掉就行,根据你的使用场景可以选下面两种实现:
- 仅适配Car及其子类的场景(更符合你现有类结构,类型更安全)
// 限定泛型T必须为Car的子类,避免传入不相关类型的Map public <T extends Car> boolean checkModel(LinkedHashMap<String, T> lineup, String model) { // 可以直接返回containsKey的结果,不需要冗余的if判断 return lineup.containsKey(model); }
- 通用任意值类型的场景(适用范围更广)
public <T> boolean checkModel(LinkedHashMap<String, T> lineup, String model) { return lineup.containsKey(model); }
如果你不需要在方法内部操作Map的value值,还可以直接用通配符简化,连泛型声明都不需要:
public boolean checkModel(LinkedHashMap<String, ?> lineup, String model) { return lineup.containsKey(model); }
上述三种写法都可以直接传入你现有的hondaModels、toyotaModels、lexusModels三个对象调用,完全不需要为不同值类型的Map重复写逻辑。
内容的提问来源于stack exchange,提问作者phamous
相关产品推荐
相关产品推荐

