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

Declarar Atributo do tipo da própria Interface em Java

package br.alura.curso.desconto;

import br.alura.curso.orcamento.Orcamento;

public interface Desconto {
    **public Desconto proximo;**
    public double desconta(Orcamento orcamento);
}
4 respostas

Oi Ricardo, em Java não dá pra declarar atributos em uma interface, só assinatura de métodos (:

Oi Yuri, entendi isso, porém não sei como resolver. Eu tentei declarar um metodo que retorna o proximo. Mas mesmo assim não resolveu.

package br.alura.curso.desconto;

import br.alura.curso.orcamento.Orcamento;

public interface Desconto {
**    public Desconto proximo();**
    public double desconta(Orcamento orcamento);

}

Vou tentar dessa forma.

solução!

Consegui resolver.

package br.alura.curso.desconto;

import br.alura.curso.orcamento.Orcamento;

public interface Desconto {
    public Desconto proximo(Desconto proximo);
    public double desconta(Orcamento orcamento);

}
package br.alura.curso.desconto;

import br.alura.curso.orcamento.Orcamento;

public class descontoPorCincoItens implements Desconto{
    private Desconto proximo;
    public double desconta(Orcamento orcamento) {
        if (orcamento.getItens().size() > 5) {
            System.out.println("desconto por mais de cinco itens de 0.1%");
            return orcamento.getValor() * 0.01;
        }
        System.out.println("sem desconto por mais de cindo itens ... proximo desconto");
        return proximo.desconta(orcamento);
    }

    @Override
    public Desconto proximo(Desconto proximo) {
        return this.proximo = proximo;
    }


}

Pode ignorar isso, não vi que tinha respondido acima! (:

Oi Ricardo, é que não entendi bem qual o problema que você está enfrentando.

O código que vc escreveu agora funciona, pq vc tirou o atributo e colocou uma assinatura de método. Agora o código java é válido.

Qual realmente o problema que está acontecendo?

Abraço!