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

Duvida com a interface Comparable

No meu código eu fiz com que ao instanciar um objeto ele possuísse um construtor com 3 parâmetros "(String nome, int anoDeLancamento, int duracaoEmMinutos)" e agora na hora de implementar o "compareTo" acontecia um erro "Cannot invoke "String.compareTo(String)" because the return value of...", apaguei o parâmetro "int duracaoEmMinutos" e agora o código está funcionando como na aula, alguém sabe me explicar o por que desse erro??

1 resposta
solução!

Olá Messias, tudo bem?

O erro ocorre porque você está implementando o método compareTo da interface Comparable na classe Titulo, mas o método compareTo da classe String espera receber um parâmetro do tipo String, não um objeto do tipo Titulo.

Quando você adicionou o parâmetro int duracaoEmMinutos, o Java tentou chamar o método compareTo da classe String para comparar uma string com um número inteiro, o que não é possível.

Ao remover o parâmetro int duracaoEmMinutos do construtor da classe Titulo, você está permitindo que a comparação seja feita corretamente, pois agora o método compareTo está sendo chamado com um parâmetro do tipo String.

Portanto, reforço que o método compareTo da classe é usado para comparar duas strings lexicograficamente, ou seja, comparar a ordem alfabética das strings.

Espero ter esclarecido a dúvida.

Caso surja outra pergunta, é só compartilhar no fórum.

Abraços e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!