Este tipo de declaração permite definir um tipo que um método pode retornar, e/ou até mesmo
os tipos de dados dos parâmetros de um método podem ser genéricos.
Vamos direto a um exemplo:
public class TesteMetodoGenerico {
public static <T extends Book> void imprime(T book) {
book.setContent("conteudo1");
book.setName("myamotto musashi");
book.setId(1);
System.out.println(book.getId() + " " + book.getName());
}
}
public static <T extends Book> void imprime(T book) {
book.setContent("conteudo1");
book.setName("myamotto musashi");
book.setId(1);
System.out.println(book.getId() + " " + book.getName());
}
}
Exemplo de utilização:
TesteMetodoGenerico m = new TesteMetodoGenerico();
m.imprime(new SecretBook()); // secretBook é um subtipo de Book
m.imprime(new SecretBook()); // secretBook é um subtipo de Book
O exemplo acima declara um método que pode receber como parâmetro um objeto do tipo Book ou qualquer subtipo do mesmo.
Este tipo de declaração é definido como limite superior, ou Upper Bounds.
Também pode-se utilizar métodos genéricos porém com limites inferiores, ou seja, Lower Bounds.
Para lower bounds, ao invés de utilizar a palavra chave extends no generics, utiliza-se super. Vamos analisar o código abaixo:
...
este artigo ainda não está completo,
aguarde o restante em breve...
Nenhum comentário:
Postar um comentário