通过指定 LinkedHashMaps 并使用通用值作为参数来创建方法

pha*_*ous 0 java linkedhashmap generic-method

假设我有一辆超级汽车,我的子类别是本田、丰田和雷克萨斯。

我有 3 个 LinkedHashMap,使用每个子类作为值:

LinkedHashMap<String, Honda> hondaModels = new LinkedHashMap<String, Honda>();
LinkedHashMap<String, Toyota> toyotaModels = new LinkedHashMap<String, Toyota>();
LinkedHashMap<String, Lexus> lexusModels = new LinkedHashMap<String, Lexus>();
Run Code Online (Sandbox Code Playgroud)

我想要实现的是这样的:

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

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

mag*_*cmn 6

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

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;
}
Run Code Online (Sandbox Code Playgroud)

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

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