У меня есть интерфейс (QBuilder), и есть два класса (MBuilder, TBuilder), реализующих этот интерфейс.Интерфейс содержит метод тестирования.Этот метод получает тип параметра MCubeInfo в MBuilder и TCubeInfo в TBuilder.
public interface QBuilder<T> {
public String test(T cubeInfo);
}
public class MBuilder implements QBuilder<MCubeInfo> {
@Override
public String test(MCubeInfo cubeInfo) {
System.out.println("MCube Info");
return "MCube";
}
}
public class TBuilder implements QBuilder<TCubeInfo> {
@Override
public String test(TCubeInfo cubeInfo) {
System.out.println("TCube Info");
return "TCube";
}
}
Я ожидаю, что когда я вызываю тестовый метод в QuerySvc, qBuilder перенаправляет меня в соответствии с типом параметра.Тем не менее, в QWuilder с автоматическим подключением устанавливается автоматически с MBuilder.Поэтому, когда я отправляю объект TCubeInfo в тестовую функцию, возникает ошибка, что он не может быть преобразован MCubeInfo.
@RestController
public class QuerySvc {
private QBuilder qBuilder;
@Autowired
public void setQBuilder(QBuilder q){
qBuilder = q)
}
@RequestMapping(value = "/boot", method = RequestMethod.GET)
public ResponseEntity<String> getTest(){
.
.
.
TCubeInfo cube = .....
qBuilder.test(cube);
}
}
При поиске проблемы я столкнулся с аннотацией @Qualifier, но не могу адаптировать ее к своемупроблема.