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
    }
}
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 umprintArrayque passa umArray T[]chamado array.
- Fiz um forEach onde elementos do tipo T chamados item(aqui poderÃamos poder qualquer nome) são capturados no Arrayarray.
- Por fim, o System.out.printlnimprime estes itens.
class Printer
{
    public <T> void printArray(T[] array) {
        for (T item : array) {
            System.out.println(item);
        }
    }
}
=========
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:
- HackerRank #6 | Scanner e End-of-file
- HackerRank #7 | Int to String / String to Int
- HackerRank #8 | Date and Time
- HackerRank #9 | Static Initializer Block
- HackerRank #10 | Currency Formatter
- HackerRank #11 | DataTypes
- HackerRank #12 | Strings Introduction
- HackerRank #13 | Substring Comparisons
- HackerRank #14 | Abstract Class
- HackerRank #18 | BigInteger
- HackerRank #19 | Loops II
- HackerRank #20 | String Reverse
- HackerRank #23 | Instanceof keyword
- HackerRank #26 | Generics
- HackerRank #27 | 1D Array
- HackerRank #28 | Anagrams
- HackerRank #33 | Arraylist
- HackerRank #34 | Exception Handling Try / Catch
- HackerRank #36 | Exception Handling
- HackerRank #37 | List
- HackerRank #38 | SubArray
- HackerRank #39 | HashSet
- HackerRank #40 | Java Dequeue
 

 
    
Top comments (0)