Я не уверен, почему выше ответы объясняют валидаторы. насколько я понимаю, вы пытаетесь вернуть два типа ответов в зависимости от условия. это невозможно. потому что возвращаемый тип проверяется во время компиляции. поэтому, если вы установите тип возвращаемого значения как classA, вы должны вернуть classA. вы не можете вернуть classB. (если classB не является отношением classA), поэтому, если вы действительно хотите это сделать, вы можете использовать интерфейс имен для принудительного применения типа.
@GetMapping(value = "/{id}")
public Response getRent(@PathVariable int id, @RequestParam(required = false) String type) {
if(type=="A"){
return new ClassA(rentService.findById(id));
}else{
return new ClassB (rentService.findDetailResponse(id));
}
}
PS: вам может потребоваться вернуть это значение как
public ResponseEntiry<Response>
но я только что использовал Response напрямую.
теперь вам нужно создать эти два класса из одного интерфейса
public interface Response {
}
public class ClassA implements Response {
// your code goes here
}
public class ClassB implements Response {
// code here
}
таким образом вы сможете достичь того, что вы естьпробовать.