DEV Community 👩‍💻👨‍💻

Beatriz Maciel
Beatriz Maciel

Posted on • Updated on

HackerRank #26 | Generics | 🇧🇷

Este exercício pede para que completemos uma classe com um método Generics que consiga receber tanto Strings quanto ints.

Os Generic Methods são utilizados nestes casos e sua sintaxe é a seguinte (em JDK8):

static <T> void fromArrayToCollection(T[] a, Collection<T> c) {
    for (T o : a) {
        c.add(o); // Correct
    }
}
Enter fullscreen mode Exit fullscreen mode

Quando usamos estamos especificando o tipo de elementos que o Array pega. Usamos a letra T porque, por convenção, temos as seguintes iniciais no Java:

T: Type | E: Element | V: Value | K: Key | N: Number

Essas convenções não são obrigatórias, só facilitam a leitura e o entendimento do código para outras pessoas. Especificamos que o Array T[] se chamará a e se utilizará da Collection que passa o tipo T e que se chamará c.

Depois de passarmos a especificação de que Array e Tipo, fazemos um forEach (sintaxe: for ( : ) {}) dizendo que pegamos todo elemento o de tipo T (que não existe, então recebe qualquer coisa) do Array a.

Em seguida, retornamos que os itens chamados o serão adicionados à c pelo método .add.

========

O exemplo acima é da documentação oficial da Oracle. No caso da resolução do exercício, fiz da seguinte forma:

  • Dentro da class Printer, declarei o método public que passa elementos do tipo <T> e um printArray que passa um Array T[] chamado array.
  • Fiz um forEach onde elementos do tipo T chamados item (aqui poderíamos poder qualquer nome) são capturados no Array array.
  • Por fim, o System.out.println imprime estes itens.
class Printer
{
    public <T> void printArray(T[] array) {
        for (T item : array) {
            System.out.println(item);
        }
    }

}
Enter fullscreen mode Exit fullscreen mode

=========

Referências

Generics : DevMedia
Generic Method : Oracle

============

Essa publicação faz parte de uma série de exercícios resolvidos em Java no HackerRank. Acesse a série completa:

Top comments (0)

🤔 Did you know?

 
📚 You can adjust your experience level in Settings to see more relevant content.