使用guice在运行时按名称获取实例
我有以下课程使用guice在运行时按名称获取实例,guice,Guice,我有以下课程 Car{} TwoWheeler exteends Car{} FourWheeler extends Car{} RandomClass{ CarFactory carfactory //Inject factory using guice public RandomClass(Carfactory carfactory){ this.carfactory= carfactory; }
Car{}
TwoWheeler exteends Car{}
FourWheeler extends Car{}
RandomClass{
CarFactory carfactory
//Inject factory using guice
public RandomClass(Carfactory carfactory){
this.carfactory= carfactory;
}
void doSometing(String carType){
carfactory.getCar(CarType)
}
}
CarFactory{
Map<String,Car> carTypeToCarMap;
Car getCarByType(String type){
return carTypeToCarMap.get(type);
}
}
Car{}
两轮车
四轮车延伸车{}
随机类{
汽车厂汽车厂
//使用guice注入工厂
公共类(汽车工厂汽车工厂){
这个.carfactory=carfactory;
}
无效剂量测定(字符串类型){
carfactory.getCar(CarType)
}
}
汽车制造厂{
地图carTypeToCarMap;
Car getCarByType(字符串类型){
返回carTypeToCarMap.get(type);
}
}
我是否可以避免创建工厂并根据carType从guice获取实例?@AutoValue
@AutoValue
public abstract class Car {
public abstract Map<String> getCarType();
public static Car.Builder builder() { return new AutoValue_Car.Builder(); }
@AutoValue.Builder
public abstract static class Builder {
public abstract PatientDto.Builder setCarType(String carType);
public abstract Car build();
}
}
公共抽象类汽车{
公共抽象映射getCarType();
public static Car.Builder(){return new AutoValue_Car.Builder();}
@AutoValue.Builder
公共抽象静态类生成器{
公共摘要patientdo.Builder setCarType(字符串carType);
公共抽象汽车制造();
}
}
如果您只想在提供carType时制作一个映射,那么您肯定不需要工厂。