Olá! Estou desenvolvendo uma aplicação simples que tem como requisito controlar a locação de vídeos.
Tenho um ArrayList de aluguéis que são realizados, mas a cada vez que eu chamo o método que adiciona elementos ao ArrayList o isEmpty retorna que o ArrayList está vazio, retorna true. Mesmo depois de já ter inserido um elemento e no fim do método ter retorno do isEmpty como false. Alguém pode me explicar o motivo isso occorer?
Fiz uns testes imprimindo na tela com println os retornos, vou postar também.
- Classe controladora da locação que tem o método que realiza o preenchimento de ArrayList de aluguéis.
package controller;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Iterator;
import javax.swing.JOptionPane;
import model.*;
public class ControladoraLocacao {
Calendar c = Calendar.getInstance();
ControladoraDevolucao devolucao;
Cliente cliente;
Locadora locadora;
public void realizarLocacao(int numeroCartaoAVS, ArrayList<Integer> filmes){
System.out.println("Entrou aqui!");
c.roll(Calendar.DATE, 3);
Aluguel aluguel = new Aluguel(numeroCartaoAVS, filmes, c.getTime());
System.out.println("Antes getAlugueis.isEmpty() é: " + aluguel.getAlugueis().isEmpty());
if(aluguel.getAlugueis().isEmpty()){
System.out.println("Entrou aqui no aluguel");
aluguel.getAlugueis().add(aluguel);
JOptionPane.showMessageDialog(null, "Locação realizada com sucesso 1");
System.out.println("Agora getAlugueis.isEmpty() é: " + aluguel.getAlugueis().isEmpty());
}else{
Iterator<Aluguel> iterator = aluguel.getAlugueis().iterator();
System.out.println("Entrou no else");
while(iterator.hasNext()){
System.out.println("Testando se tem clientes com alugueis");
Aluguel aluguel1 = (Aluguel) iterator.next();
if(aluguel1.getCartaoAVS() == numeroCartaoAVS){
JOptionPane.showMessageDialog(null, "Cliente possui locação pendente");
JOptionPane.showMessageDialog(null, "Valor da multa: " + devolucao.calcularMulta());
break;
}else if(filmes != null){
aluguel.getAlugueis().add(aluguel);
JOptionPane.showMessageDialog(null, "Locação realizada com sucesso 2");
break;
}
}
}
}
}
Saída no console:
///primeira chamada do método
Entrou aqui!
Antes getAlugueis.isEmpty() é: true
Entrou aqui no aluguel
Agora getAlugueis.isEmpty() é: false
//segunda chamada do método
Entrou aqui!
Antes getAlugueis.isEmpty() é: true
Entrou aqui no aluguel
Agora getAlugueis.isEmpty() é: false
Como podem perceber, quando eu chamo o método de novo os isEmpty() retorna true, mesmo tendo preenchido o ArrayList na chamada anterior. Por que isso acontece? Alguém pode ajudar?

