Допустим, у меня есть конструктор для шины, который принимает два целых числа, pressure
и maxPressure
public class Tire {
private int pressure;
private int maxPressure;
public Tire(int pressure, int maxPressure){
this.pressure = pressure;
this.maxPressure = maxPressure;
}
public int getPressure(){return pressure;}
public int getMaxPressure(){return maxPressure;}
}
В моем основном классе я могу добавить новый Tire
к HashMap
с именем tires
с pressure
из 25 и maxPressure
из 32.
public Map<String, Tire> tires = new HashMap<>;
public int defaultTirePressure = 28;
tires.put("Goodyear", new Tire(25, 30));
Я хочу иметь возможность получить pressure()
объекта Tire
, если он существует, или использовать defaultTirePressure
//should be 25
tires.getOrDefault("Goodyear", defaultTirePressure).getPressure();
//should be 28 because there is no Michelin tire defined in tires
tires.getOrDefault("Michelin", defaultTirePressure).getPressure();
Очевидно, что это не работает, потому что defaultTirePressure
является целым числом, а tires
содержит Tire
объектов.
Это работает, но это довольно долго:
//will set someTirePressure to 25
if(tires.containsKey("Goodyear")){
someTirePressure = tires.getValue("Goodyear").getPressure();
}else{
someTirePressure = defaultTirePressure;
}
//will set anotherTirePressure to 28 because there is no Michelin tire defined in tires
if(tires.containsKey("Michelin")){
anotherTirePressure = tires.getValue("Goodyear").getPressure();
}else{
anotherTirePressure = defaultTirePressure;
}
Нет ли способа использовать getOrDefault в этом примере?Я чувствую, что, возможно, ответил на свой вопрос.