Covariancia

Uma das mudanças do Tiger que eu não coloquei nos slides da minha palestra no BrasilOne é o suporte a covariância. O que é isso?

Basicamente, no escopo do Tiger, isso se refere ao fato de um método poder sobrescrever outro retornando uma subclasse do tipo de retorno do método original. Algo assim:

public interface Product {
   //...
}

public abstract class Factory {
   public abstract Product create();

   //...
}

public class ConcreteProduct implements Product {
   //...
}

public class ConcreteFactory extends Factory {
   public ConcreteProduct create() {
      //...
   }

   //...
}

O exemplo de covariância é o método create(). A “graça” de ter covariância é que você elimina os casts quando está acessando o tipo concreto diretamente, o que seria muito bom pra quando você tem uma família de interfaces sendo implementadas todas juntas por um conjunto de classes concretas que são dependentes entre si. O código fica muito mais “limpo” do que é hoje.

Comments are closed.