通过指定具有泛型值的 LinkedHashMaps 作为参数来创建方法

Creating methods by specifying LinkedHashMaps with generic values as a parameter

假设我有一辆超级 class Car 而我的 class 是 Honda丰田雷克萨斯

我有 3 个 LinkedHashMap,每个子 class 作为值:

LinkedHashMap<String, Honda> hondaModels = new LinkedHashMap<String, Honda>();
LinkedHashMap<String, Toyota> toyotaModels = new LinkedHashMap<String, Toyota>();
LinkedHashMap<String, Lexus> lexusModels = new LinkedHashMap<String, Lexus>();

我想要实现的是这样的:

public <T> boolean checkModel(LinkedHashMap<String, <T>> lineup, String model) {
    if (lineup.containsKey(model)) {
        return true;
    }
    return false;
}

我是否可以通过指定具有通用值的 LinkedHashMap 作为参数来创建一个方法,这样我就不必为所有 3 个 LinkedHashMap 重复相同的方法?

如果您只想检查地图是否包含密钥,您可以使用 ? 通配符。

public boolean checkModel(Map<String, ?> lineup, String model) {
    // trim any leading or trailing whitespace for the given vehicle model
    model = model.trim();
    if (lineup.containsKey(model)) {
        return true;
    }
    return false;
}

现在只要键是字符串,该方法就可以接受任何映射。

如果您只想接受以字符串作为键并以汽车作为对象的地图,您可以改写 Map<String, ? extends Car>。无需使用类型参数。