Hola Adrián:
Veo muy bien tu código, cumple con la consigna del ejercicio.
Quisiera hacerte solamente dos observaciones:
1) En la clase Test, haría una modificación para no dejar el 'else if" vacío.
public class Test {
static ListaCantantesFamosos lista;
public static void main (String[] args) {
lista = new ListaCantantesFamosos();
lista.addCantante(new CantanteFamoso ("Madonna","All I want is you"));
lista.addCantante(new CantanteFamoso ("Jorge Negrete","Jalisco"));
System.out.println("\fMostrando lista actual\n");
lista.getLista();
opcionCantante();
}
public static void opcionCantante () { //metodo que nos pregunta por mas cantantes
EntradaDeTeclado respuestaUsuario, nuevaEntrada;
CantanteFamoso cantante;
do {
System.out.println("\nDesea ingresar otro cantante? Y/N");
respuestaUsuario = new EntradaDeTeclado();
//if que contempla respuesta "Y", respuesta "N" o cualquier otra respuesta
if(respuestaUsuario.getEntrada().equalsIgnoreCase("y")) {
cantante = new CantanteFamoso();
System.out.println("\nIngresa un nuevo cantante");
nuevaEntrada = new EntradaDeTeclado();
cantante.setCantante(nuevaEntrada.getEntrada());
System.out.println("Ingresa el disco mas vendido de "+nuevaEntrada.getEntrada());
nuevaEntrada = new EntradaDeTeclado();
cantante.setDisco(nuevaEntrada.getEntrada());
lista.addCantante(cantante);
System.out.println("\nMostrando lista actualizada\n");
lista.getLista();
} else if (!respuestaUsuario.getEntrada().equalsIgnoreCase("n")) {
System.out.println("Por favor ingresa Y o N");
}
} while (!respuestaUsuario.getEntrada().equalsIgnoreCase("n"));
System.out.println("\nMostrando lista final\n");
lista.getLista();
System.out.println("\nPrograma finalizado");
}
}
2) En la clase ListaCantantesFamosos renombraría la clase getLista() por un nombre más acorde, como podría ser por ejemplo mostrarLista() ya que lo que el método hace es "mostrar la lista", y no "devolver la lista" que es lo que se interpretaría con getLista().
A seguir adelante!