Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Polimorfismo usando Object VS programação genérica

Estou em dúvida quanto as duas implementações abaixo:

(Programação genérica)

public static <T> int busca( T [] array, T alvo ) {
    for( int pos = 0; pos < array.length - 1; pos++ ){
        if( array[pos] == alvo ){
            return pos;
        }
    }
    return -1;
}

(Polimorfismo usando a classe Object)

public static  int  busca( Object[] array, Object alvo ) {
    for( int pos = 0; pos < array.length - 1; pos++ ){
        if( array[pos] == alvo ){
            return pos;
        }
    }
    return -1;
}

Uma é uma melhor prática que a outra? Tanto faz uma ou outra? Ou há casos em que uma é mais apropriada que a outra?

2 respostas
solução!

Oi Pedro, tudo bem? Acho que a resposta depende do cenário.

O polimorfismo possibilitado pela classe Object trás seus efeitos colaterais, sempre precisamos fazer cast em algum lugar. Sem contar que não temos como garantir que os objetos serão sempre de um certo tipo, o que pode ser vantajoso ou não.

No Generics temos a vantagem de especificar um tipo e neste caso, se livrar dos castings e evitar algumas exceptions em tempo de compilação.

Lembrando que, não é por que podemos tipar algo, perdemos o polimorfismo. Podemos ter polimorfismo por herança ou mesmo por interface. Neste caso, eu diria que o melhor caminho seria o uso de Generics mesmo.

Entendo, estava pensando sobre o assunto e tinha chegado a essa conclusão também. Obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software