下面是我的問題的一個抽象示例:我有一個通用類(Car
),它有一個類型(brand
)。所有對象只應根據品牌而有所不同,基於這個品牌應該以不同的方式處理。根據枚舉類型調用特定方法?
該類的所有對象都收集在服務類的列表中。該服務應該在整個清單上執行一個例程,這與大多是一樣。只是一個函數調用應該有所不同。
基於這種類型,我想調用不同的方法:目前,我爲枚舉類型聲明瞭equals,並根據結果調用不同的方法。但是這有點難看,我想知道是否有更好的解決方案?
class Car {
public enum Brand {
BMW, AUDI;
}
private Brand brand;
specificMeth1();
specificMeth2();
}
class Service {
List<Car> bmw;
List<Car> Audi;
processCar() {
processList(bmw);
processList(audi);
}
processList(List<Car> list) {
for (Car car : list) {
if (car.getBrand.equals(Brand.BMW)) {
specificMeth1();
} else {
specificMeth2();
}
}
}
}
旁註:你不需要使用'equals( )'與枚舉。 'car.getBrand()== Brand.BMW'工作得很好。 –