Iterator num ServletController

Pessoal, no código destacado abaixo tenho um problema:

No trecho do código seguinte:

Iterator iterator = lancamentos.iterator();

O Eclipse está apresentando um erro, dizendo que tenho que colocar um cast para lancamentos.

Ae, quando eu aceito a sugestão do Eclipse, é gerado o seguinte código substituindo o anterior, automaticamente:

Iterator iterator = ((Object) lancamentos).iterator();

Eu não tenho a menor idéia do que fazer com esse Object que fica selecionado após eu aceitar a sugestão do Eclipse.

Alguém sabe o que fazer nesse caso?

Obrigado,

airmigjr

Segue o código do Servlet:

[code]package controle;

import io.LancamentoIO;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import modelo.Lancamento;

import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List;

public class ServletController extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	// TODO Auto-generated method stub
}

private void processaRequisicao(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
	
	HttpSession sessao = request.getSession();
	List lancamentos = (List)sessao.getAttribute("lancamentos");
	
	String arquivo = this.getServletContext().getRealPath("/WEB-INF/lancamentos.txt");
	LancamentoIO io = new LancamentoIO(arquivo);
	
	Iterator iterator = lancamentos.iterator();
	while(iterator.hasNext()){
		Lancamento lancamento = (Lancamento)iterator.next();
		io.gravarRegistro(lancamento);
	}
	
	DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
	formatter.setLenient(false);
	
	Cookie ckUltimaGravacao = new Cookie("DataUltimaGravacao", formatter.format(new Date()));
	ckUltimaGravacao.setMaxAge(60*60*24*7);
	response.addCookie(ckUltimaGravacao);
	
	RequestDispatcher view=request.getRequestDispatcher("resultado.jsp");
	view.forward(request, response);
	
}

}
[/code]

O import do List está errado, o correto é

import java.util.List;

Uma dica, se estiver trabalhando com uma versão do Java igual ou superior a 1.5, trabalhe com objetos tipados. Ficaria desta maneira:

List<Lancamento> lista = (List<Lancamento>) sessao.getAttribute("lancamentos"); Iterator<Lancamento> it = lista.iterator(); while (it.hasNext()) { Lancamento lancto = it.next(); }

Caro biro,
muito obrigado pelas informações. Você me ajudou muito.
Sem querer abusar, deixe-me perguntar:
Vc falou em trabalhar com objetos tipados. Poderia exemplificar com um modelo mais simples para mim, ou me indicar alguma literatura a respeito? Eu tenho percebido que alguns programadores realmente utilizam , mas não entendi muito bem o porque até agora.

Muito obrigado,

airmigjr

Você evita ter que fazer cast. Desta maneira o compilador já espera um objeto do tipo que você declarou, por exemplo

List<Usuario> list = new ArrayList<Usuario>(); Pessoa pessoa = new Pessoa(); list.add(pessoa);

Este código gerará um erro de compilação, pois o método add() espera um objeto do tipo Usuario, pois você definiu assim.
É bacana pra evitar erros em tempo de execução (ClassCastException) e garantir sempre o mesmo tipo de objeto na sua lista.

Abrs.