2
respostas

[Dúvida] Instanciação de classe abstrata??

a linha de código:

HttpClient client = HttpClient.newHttpClient();

me deixou com uma pulga atrás da cabeça. Parece que está criando uma referência a um objeto do tipo HttpClient, sendo que HttpClient é uma classe abstrata. Como isso é possível? Está relacionado a um Design Pattern mencionado na aula?

2 respostas

A funcao newHttpClient() da classe HttpClient instancia a classe HttpClientBuilderImpl que implementa HttpClient.Builder. Segue o código da função newHttpClient():

 public static HttpClient newHttpClient() {
        return newBuilder().build();
    } 
public static Builder newBuilder() {
        return new HttpClientBuilderImpl();
    }

Ah entendi, valeu! A única coisa que me incomoda agora é a referência client ser do tipo HttpClient, e não HttpClientBuilderImpl. Minha dúvida parece ser mais avançada, é só por curiosidade mesmo.