Sie sind auf Seite 1von 7

Conceitos Java

1. Introdução

Java é uma linguagem de programação que, diferente de smalltalk por exemplo, não prende 
você   a   uma   IDE   (Integrated   Development   Environment  ou   Ambiente   de   Desenvolvimento 
Integrado). É possível programar em java usando apenas um editor de texto para a escrita do código 
e o console para a compilação e execução do mesmo.
Mas devido a grande quantidade de comandos, nomes de classes, nomes de métodos, etc. 
fica difícil para o programador de java, dependendo da complexidade do problema, fazer um bom 
uso da linguagem sem uma boa IDE. Um exemplo simples disso é a criação de interfaces gráficas 
complexas para aplicações em  desktop, onde torna­se uma atividade extremamente exaustiva caso 
você não utilize alguma ferramente o auxilie.
Esse   tutorial   tem   como   objetivo   explicar   algumas   funcionalidades   do   Java   que   muitos 
programadores  podem não  conhecer. O  importante de  se conhecer  e fazer  um bom uso dessas 
funcionalidades   é   que   elas   podem   ser   úteis   para   o   entendimento   do   código   (caso   você   esteja 
trabalhando   com   códigos   que   outras   pessoas   ajudaram   a   construir)   e   também   para   um   bom 
refatoramento. Estaremos  trabalhando com o Netbeans, mas  todos  os procedimentos  podem ser 
feitos exatamente da mesma maneira no Eclipse.

2. Iterators.

Iterators são objetos que permitem que você percorra todos os elementos de uma coleção em 
sequência.   Para   compreender   melhor   faça   o   seguinte:   Abra   o   netbeans   e   faça   uma   declaração 
simples de uma List e instanciando­a como ArrayList dentro de um método qualquer.

Agora podemos instanciar nosso iterator. Logo em baixo da declaração digite “for” e de um 
ctrl+espaço.

Será   apresentado   um   conjunto   de   opções   diferentes   que   podem   ser   realizados   com   o 
comando “for”. Selecione a segunda opção e aperte enter. O Netbeans deverá construir corretamente 
o iterator baseado na sua declaração da lista.
Iterator it = lista.iterator();  ­ Este comando é responsável por criar um novo iterator a partir 
de um iterator fornecido pela lista. Objetos do tipo collection normalmente fornecem seus iterators 
a partir do metodo iterator().
it.hasNext(); ­ Retorna true se o próximo objeto da lista for diferente de null, caso contrário 
retorna false.
Object object = it.next(); ­ Neste comando é criado uma referência para o próximo objeto da 
lista fornecido pelo it.next().

A interface  Iterator  permite que você percorra a sua coleção em apenas um caminho, já a 


ListIterator permite que você percorra em 2 caminhos:

Obs. Os exemplos mostrados foram apenas para ilustração, para a execução correta do código é 
necessário adicionar elementos dentro da lista através do método add.

3. For­Each

O for­each é uma outra forma mais simples de percorrer coleções fazendo uso do “:”. A 
seguir está dois exemplos de uso do for­each, um usando coleção e outro usando array.

Para um melhor entendimento deve­se ler o “:” como “em”. No exemplo for(int i : a) é como 
se estivéssemos dizendo “para cada inteiro i em a faça”.

4. Generics.

O  generics  tornou­se   disponível   a   partir   do   JDK   1.5   do   java   e   iremos   dar   uma   breve 
explicação no seu conceito e uso.
Veja o trecho a seguir:
Na linha 1 estamos instanciando uma “listaDeInteiros” e na linha 2 adicionando um novo 
objeto do tipo Integer com o valor de 1. Perceba que na 3ª linha ao buscarmos esse objeto através do 
listaDeInteiros.iterator().next()  precisamos fazer um  cast  utilizando o  “(Integer)”  para podermos 
atribuir esse objeto à referência “x”. Um  cast  nada mais é que um comando para converter um 
objeto Java de um tipo para outro.
O cast é essencial porque o compilador pode garantir apenas que um objeto irá ser retornado 
pelo iterator. Um modo melhor para realizar essa tarefa é marcar a lista com um tipo específico de 
valores. Essa é a ideia principal dos generics. A seguir está o código anterior agora fazendo uso do 
generics:

Perceba agora que definimos a nossa lista como sendo uma List de inteiros “List<Integer>” 
e   perceba   que   agora   o  cast  é   desnecessário.   Agora   o   compilador   pode   checar   em   tempo   de 
compilação a exatidão do tipo.
É importante entender também que muitos outros recursos do java além das  Collections 
também fazem uso de generics até mesmo a classe Class. Vamos ver um exemplo um pouco mais 
avançado:

4.1. Outras utilizações

Iremos utilizar neste exemplo o conceito de persistência de dados aonde iremos criar um 
CRUD baseado em generics em que precisamos persistir um determinado objeto. 

Estamos tentando salvar um novo objeto do tipo cliente e do tipo gerente usando o método 
save()  existente   na   classe  GenericCRUD.   Vamos   ver   agora   como   está   estruturado   esse   método 
save().

O método save() nada mais é do que um método genérico, ele irá “descobrir” o valor de T 
baseado no valor de seu parâmetro. 
O   “T”   nada   mais   é   do   que   nosso   tipo   genérico,   o   seu   valor   é   definido   pelo   valor   do 
parâmetro   do   método.   Também   seria   possível   especificar   o   “<T>”   na   declaração   da   classe   da 
seguinte maneira:
Como primeiramente enviamos um “new Cliente()” o valor de T será assimilado como um 
objeto do tipo Cliente, a mesma coisa irá acontecer com o objeto Gerente. Ou seja, o valor de T é 
definido pelo parâmetro do método. O valor de T será então agora passado para o método save() da 
classe ObjectSUDI, esse método está estruturado da seguinte maneira:

Como parâmetro temos que receber um Object, pois é seguro dizer que todo T é também um 
objeto, se tentássemos definir um Integer como parâmetro deste método, por exemplo, um erro de 
compilação irá ocorrer.

4.2. Curingas

Uma outra possibilidade de uso no generics é o uso do curinga. No java o “?” é o chamado 
tipo desconhecido e podemos usá­lo da seguinte maneira: “Collection<?>” (Lê­se  collection of 
unknown ou collection de desconhecido). Para mostrar o uso desse recurso vamos criar um método 
para mostrar todos os elementos de uma coleção:

Embora estejamos definindo o tipo da coleção como de Object, estamos restringindo todas 
as coleções permitindo apenas uma coleção de objetos. Qualquer coleção de outro tipo irá dar erro 
de compilação. Para resolver esse problema, iremos fazer uso do curinga. O método irá ficar da 
seguinte maneira:

Desta maneira estamos permitindo como parâmetro uma coleção de qualquer tipo, veja um 
exemplo de todo o código utilizando esse método.
Dessa maneira, o método printColecao irá ser capaz de imprimir qualquer tipo de coleção 
fornecida.

4.3. Definindo limites

Com o generics é possível definir limites para as classes que podem ser usadas utilizando o 
extends e o super. Por exemplo:
• <? extends T>
­ Aceita T e todos os seus descendentes
­   Ex:  se T  for  Collection,  aceita  List,  Set,  ArrayList, etc.  (poderia  também  ser  usado   o 
<T extends Collection>)
• <? super T>
­ Aceita T e todos os seus ascendentes
– Ex: se T for ArrayList, aceita List, Collection, Object.

5. Classes Anônimas.

Uma   classe   anônima   em   java   basicamente   é   uma   classe   sem   nome,   devido   a   essa 
característica você só pode usá­la uma vez no local da declaração. As classes anônimas sempre 
implementam uma interface ou herdam de alguma classe e não possuem seus próprios construtores, 
elas utilizam o da classe a qual está herdando. Caso a classe anônima esteja implementando uma 
interface um construtor sem parâmetros será herdado de Object.
A seguir está um exemplo de código utilizando uma classe anônima
Neste   caso   a   classe   anônima   implementa   a   interface  Interface  para   poder   fazer   uso   do 
método saudacao(). As classes anônimas também são usadas para controle de eventos no Java, você 
consegue ver seu uso em eventos de um jButton por exemplo.

Neste caso é definida a addActionListener() do jButton1, onde é criada uma classe anônima 
que implementa a interface ActionEvent. O método actionPerformed(java.awt.event.ActionEvent 
evt) é implementado chamando o método responsável pela ação do botão.

6. Reflexão em java.

Reflexão basicamente é a capacidade de um programa de investigar fatos sobre si próprio. 
Um objeto pode, por exemplo, ter conhecimento de quais métodos um outro objeto possui.
Toda classe Java que tem alguma instância existe na memória na forma de uma instância da 
classe Class. Essas instâncias contêm todas as informações de uma classe ­ seu nome, dados, 
métodos, etc ­ além de métodos para recuperar essas informações. Há três formas de obtermos 
instâncias da classe Class:
1. Usando o método getClass() em um objeto qualquer:
Class class = r.getClass();
2. Usando o sufixo .class em uma classe conhecida:
Class class = java.io.FileReader.class;
3. Usando o método estático Class.forName(String nome):
Class class = Class.forName(stringComNomeDaClasse);
De posse de um objeto do tipo Class podemos chamar os seguintes métodos para obter mais 
informações sobre a classe (a lista a seguir é apenas um pequeno subconjunto dos métodos da classe 
Class):
• String getName() ­ retorna o nome da classe
• Object newInstance() ­ retorna um novo objeto que é instância da classe
• Method[] getMethods() ­ retorna uma lista de objetos da classe Method, representando os 
métodos da classe
• Field[] getFields() ­ retorna uma lista de objetos da classe Field, representando os campos da 
classe
• Method getMethod(nome, tipos dos parâmetros) ­ retorna o método que tem o nome e 
parâmetros dados, se existir.
A   seguir   está   um   exemplo   de   código   que   imprime   na   tela   todos   os   métodos   de   uma 
determinada classe.

7. Referências Bibliográficas

http://java.sun.com/j2se/1.5.0/docs/guide/language/generics.html
http://java.sun.com/j2se/1.5.0/docs/guide/language/foreach.html
http://java.sun.com/docs/books/tutorial/extra/generics/wildcards.html
http://java.sun.com/j2se/1.5/pdf/generics­tutorial.pdf
http://littletutorials.com/2008/03/09/anonymous­inner­classes/
http://www.inf.pucminas.br/professores/torsten/aulas/aula13.html

Das könnte Ihnen auch gefallen