interface Car{ } interface SportCar extends Car{ } class DefaultCar implements Car { } @FerrariQualifier class DefaultSportCar implements SportCar { } What I would like to inject: @Inject private Car car; //inject DefaultCar @Inject @FerrariQualifier private Car ferrari; //inject DefaultSportCar @Inject private SportCar sportCar;//inject DefaultSportCar