Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Método compareTo

Coloquei o atributo tempo no método de classificação deu o erro "Cannot invoke compareTo(int) on the primitive type int. O que deveria ter feito se quisesse implementar esse método na classe Aula?

package br.com.alura;

public class Aula implements Comparable<Aula>{

        private String titulo;
        private int tempo;

        public Aula (String titulo, int tempo) {
            this.titulo = titulo;
            this.tempo = tempo;
        }

        public String getTitulo() {
            return titulo;
        }

        public int getTempo() {
            return tempo;
        }

        @Override
        public String toString() {
            return "[Aula: = " + this.titulo + ", " + this.tempo + " minutos]";
            //return super.toString();
        }

        @Override
        public int compareTo(Aula outraAula) {
            return this.tempo.compareTo(outraAula.tempo);
        }
}

1 resposta
solução!

Oie Mario, tudo bem com você?

Esse erro aconteceu, pois você tentou chamar um método de uma variável do tipo primitivo.

 @Override
        public int compareTo(Aula outraAula) {
            return this.tempo.compareTo(outraAula.tempo);
        }                   // variável tempo é do tipo primitivo "int", e tipos primitivos não chamam métodos

Para resolver esse problema basta trocar o tipo da variável "tempo" de "int" para "Integer".

Segue o código abaixo com as mudanças feitas:


package br.com.alura;

public class Aula implements Comparable<Aula>{

        private String titulo;
        private Integer tempo; // trocar de int para Integer

        public Aula (String titulo, int tempo) {
            this.titulo = titulo;
            this.tempo = tempo;
        }

        public String getTitulo() {
            return titulo;
        }

        public int getTempo() {
            return tempo;
        }

        @Override
        public String toString() {
            return "[Aula: = " + this.titulo + ", " + this.tempo + " minutos]";
            //return super.toString();
        }

        @Override
        public int compareTo(Aula outraAula) {
            return this.tempo.compareTo(outraAula.getTempo); // precisa trocar "outraAula.tempo" por "outraAula.getTempo"
        }
}

Espero que eu tenha ajudado, qualquer dúvida ou problema fico a disposição :)

Bons estudos!