Solucionado (ver solução)
Solucionado
(ver solução)
8
respostas

Dúvida no Ex. 4 da Aula 4 - Comportamentos compostos por outros comportamentos e o Decorator

O código abaixo não compila na minha máquina:

c.getDataAbertura().get(Calendar.YEAR) -> este get não está disponível nas opções do meu compilador.

for(Conta c : contas) {
              if(c.getDataAbertura().get(Calendar.MONTH) == Calendar.getInstance().get(Calendar.MONTH) && 
                      c.getDataAbertura().get(Calendar.YEAR) == Calendar.getInstance().get(Calendar.YEAR)) {
                  filtrada.add(c);
              }
          }

Alguém pode me ajudar?

8 respostas

Você fez o import da classe Calendar ?

Marco, da uma olhada na sua classe conta, se estiver usando o eclipse aperte crtl+o e digite getDataAbertura. Suspeito que a sua classe Conta esteja sem esse método. Pois em nenhum momento das aulas ele foi criado.

Prezados Patricia e Gabriel

Eu agradeço pela atenção de vocês, mas o problema está em que, por algum motivo, o meu Eclipse não está configurado com a versão atual do Java. Eu usei, para que o programa funcionasse, os métodos 'getMonth()' e 'getYear()' que aparecem tachados no meu código, porém validados pela anotação '@SuppressWarnings("deprecation")' que o Eclipse inseriu antes do método 'public List filtra(List contas)'. Tentei em 'Project' -> 'Properties' -> 'Java Build Path' -> 'Libraries' -> 'Remove' -> 'JRE System Library' e depois 'Add Librarty' para fazer a atualização, obtive sucesso, atualizando para '[jre 1.8.0_45]', mas não resolveu o problema. O meu programa acabou funcionando, depois de eu ralar bastante.

Gabriel

Você pode postar aqui a sua classe Conta? Creio ter feito corretamente, mas fiquei em dúvida. Grato.

Oi Marco,

O seu método getDataAbertura() está retornando um Calendar?

Abraço

Obrigado, pessoal, eu realmente não estava utilizando a classe Calendar na minha classe Conta. Passei a usar e consegui resolver o problema a contento.

Marco, desculpa a demora. Segue minha classe conta. Porém já utilizei nela a nova API de datas presente no java 8 ao invés do Calendar. Qualquer dúvida, só perguntar

import java.time.LocalDate;

import br.com.relatorio.domain.Agencia;

public class Conta {

private String titular; protected double saldo; private String numeroConta; private Agencia agencia; private LocalDate dataCriacao; protected EstadoDaConta estado;

public Conta(String titular, double saldo, String numeroConta, Agencia ag) { this.titular = titular; this.saldo = saldo; this.numeroConta = numeroConta; this.agencia = ag; }

public String getTitular() { return titular; }

public double getSaldo() { return saldo; }

public String getNumeroConta() { return numeroConta; }

public Agencia getAgencia() { return agencia; }

public LocalDate getDataCriacao() { return dataCriacao; }

public void setDataCriacao(LocalDate dataCriacao) { this.dataCriacao = dataCriacao; }

public void saca(double valor) { estado.saca(this, valor); }

public void deposita(double valor) { estado.deposita(this, valor); } }

solução!

Valeu, Gabriel, obrigado.