Open Pablo-Goros opened 6 days ago
Hola @Pablo-Goros Paso a contestar punto por punto:
Fijate que en el programa de prueba hace
ranker.rateUp(new Book("Eragon", "Christopher Paolini"));
ranker.rateUp(eragon);
pero nunca se llamó a ranker.add
con el libro Eragon, es decir, hay que soportar invocar a rateUp
con un libro que no haya sido agregado antes con el método add
.
Es verdad que
if(genre.equals(rankedBook.genre))
terminaría comparando un género válido con un null
y está bien porque objeto.equals(null)
dará siempre false
.
[!TIP] Recordá que
null instanceof ClassX
siempre dafalse
.
Estaría mal hacer la inversa, es decir,
if(rankedBook.genre.equals(genre))
ya que obtendrías una NullPointerException
en esos casos.
Respecto a tu última consulta no, no hay ninguna razón específica, está perfecto hacer todo private y los getters correspondientes. Me anoto para mejorar eso de la solución. Gracias por notarlo.
Ahhhh genial ahi entendi perfecto.
Muchisimas gracias!
Hola que tal, como va?
Tengo una duda respecto de la consigna donde dice:
No logro entender como puede pasar esto y el codigo puede funcionar. Por ejemplo, con el caso del libro Eragon que se inicia de la siguiente manera:
ranker.rateUp(new Book("Eragon", "Christopher Paolini"));
Luego cuando se utiliza el printRanking de un genero, cuando se hace la comparacionif(genre.equals(rankedBook.genre))
No se termina comparando null?Y otra duda que me surgio es respecto de la definicion de RankedBook:
public class RankedBook implements Comparable<RankedBook> { Book book; Genre genre; private int ranking; }
Hay alguna razon en especifico por la que no se hace que las variables book y genre sean private y final?