通过指定具有泛型值的 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>
。无需使用类型参数。
假设我有一辆超级 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>
。无需使用类型参数。