我有课:
@Component
@NoArgsConstructor
public class ServiceFactory {
private CustomerService customerService;
private ClientService clientService;
private Map<OrderType, SettlementService> settlementServiceMap;
public ServiceFactory(CustomerService customerService, ClientService clientService) {
this.customerService = customerService;
this.clientService = clientService;
this.settlementServiceMap = new EnumMap<OrderType, SettlementService>(OrderType.class){{
put(CUSTOMER_CREDIT_ORDER, customerService);
put(CLIENT_CREDIT_ORDER, clientService);
put(CLIENT_DEBIT_ORDER, clientService);
}};
}
public SettlementService provideService(OrderType orderType){
Optional<SettlementService> settlementService = Optional.ofNullable(settlementServiceMap.get(orderType));
if (!settlementService.isPresent()){
throw new ApplicationException("Wrong order type");
}
return settlementService.get();
}
}
由于服务尚未初始化,我得到了NullPointerException
。映射包含orderType作为键,并引用service作为值。用服务填充地图的正确方法是什么?