Используйте Generi c Type для ResponseEntity - PullRequest
0 голосов
/ 17 июня 2020

У меня есть Generi c метод callOutOfBoundServices, который вызывает внешние службы

public <T> T callOutOfBoundServices(String... args) {
        return resultofOutsideServices(args).getBody();
    }

public <T> ResponseEntity<T> resultofOutsideServices(String... args) {
            // Business Logic. Building restTemplate call
        }

Вышеупомянутый метод работает для простых POJO, но у меня есть уникальный вариант использования, когда я должен использовать его для ResponseEntity . Можно ли вызвать метод общим c способом для ResponseEntity без изменения сигнатуры метода?

Я пробовал этот вызов:

ResponseEntity<EmployeePOJO> rs = callOutOfBoundServices(args); 

но я я получаю:

Incompatible types: Required ResponseEntity<EmployeePOJO> but type was inferred to T for callOutOfBoundServices.

Примечание:

  1. Использование приложения Spring Boot, где текущие и внешние службы также являются приложениями на основе Spring.

  2. Использование Spring RestTemplate для всех внешних служб.

1 Ответ

1 голос
/ 17 июня 2020

Когда вы возвращаете объект EmployeePojo, вам не нужно было писать T там

public ResponseEntity<EmployeePojo> callOutOfBoundServices(String... args) {
        return resultofOutsideServices(args);
    }

Вы должны вернуть объект EmployeePojo

return ResponseEntity.ok(employeePojoObj);
...