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)