import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.core.ParameterizedTypeReference; 
import org.springframework.http.HttpMethod; 
import org.springframework.http.ResponseEntity; 
import org.springframework.web.client.RestTemplate; 

import java.util.Set; 

@SpringBootApplication 
public class Jdk11bugApplication { 

@FunctionalInterface 
public interface ApiCall<T> { 
ResponseEntity<T> execute(); 
} 

private RestTemplate restTemplate; 

public Set<String> getResult() { 
Set<String> response; 
response = callApi(() -> restTemplate.exchange( 
"/abc", 
HttpMethod.GET, 
null, 
new ParameterizedTypeReference<>() { 
})); 
return response; 
} 

public <T> T callApi(final ApiCall<? extends T> apiCall) { 
return apiCall.execute().getBody(); 
} 

public static void main(String[] args) { 
SpringApplication.run(Jdk11bugApplication.class, args); 
} 
} 